2011-07-06 192 views
1

我正在做肥皂請求/響應應用程序。在構建SOAP響應時,我得到「服務器無法識別HTTP Header SOAPAction的值」。肥皂響應錯誤

這是什麼意思?以及如何解決這個問題?

這是代碼。

NSString *soapMessage = [NSString stringWithFormat: @"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 
         "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" 
         "<soap:Body>\n" 
         "<SignOn xmlns=\"http://10.12.50.99/CUTechWebservices/CuTechWebService.asmx\">\n" 
         "<DeviceID>4A6B740C-0B5B-5F8C-8694-1EC0196C1C67</DeviceID>\n" 
         "<UserID>10827</UserID>\n" 
         "<CrID>6</CrID>\n" 
         "<UserPin>777777!</UserPin>\n" 
         "</SignOn>\n" 
         "</soap:Body>\n" 
         "</soap:Envelope>\n"];  
NSLog(@"%@",soapMessage); 

//Soap request. 
NSURL *url = [NSURL URLWithString:@"https://mobile.areafinancial.com/cutechservice/cutechwebservice.asmx"]; 
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 
NSString *msgLength = [NSString stringWithFormat:@"%d",[soapMessage length]]; 
[theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[theRequest addValue:@"http://10.12.50.99/CUTechWebservices/CuTechWebService.asmx" forHTTPHeaderField:@"SOAPAction"]; 
[theRequest addValue:msgLength forHTTPHeaderField:@"Content-Length"]; 
[theRequest setHTTPMethod:@"POST"]; 
[theRequest setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

回答

1

在SOAP 1.2 SOAPAction頭被替換爲 「可選的」 actionContent-Type頭字段的屬性。

與下面的頭試試:

Content-Type: application/soap+xml; charset=utf-8; action="https://mobile.areafinancial.com/cutechservice/cutechwebservice.asmx?op=SignOn" 

沒有SOAPAction:頭字段。

另請參見http://www.coderanch.com/t/224524/Web-Services/java/SOAPAction-header

+0

我試過了。但是這次我收到錯誤「無法處理請求,操作'https://mobile.areafinancial.com/cutechservice/cutechwebservice.asmx?op=SignOn''無法識別。」 –

+1

嘗試'http:// 10.12.50.99/CUTechWebservices/CuTechWebService.asmx/SignOn'作爲操作。我通過下載https://mobile.areafinancial.com/cutechservice/cutechwebservice.asmx?WSDL並搜索soapAction字符串來發現它。 –

+1

@peter,這是我真正做到的。它的工作完美。謝謝你的幫助 –

0

嘗試刪除下面的行,看看你得到什麼。您在請求中傳遞的這個標頭。您應該傳遞與Web服務相同的標題。

[theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
+0

這是行不通的。 –

+0

你得到什麼錯誤? – Deeps

+0

我解決了這個錯誤。感謝幫助。 –