2013-05-08 41 views
1

当我向iphone发送webservice soap请求时出现错误。我该如何解决它?xml soap响应中出现错误

这里是我收到的消息。

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
    <soap:Fault> 
    <faultcode>soap:Client</faultcode> 
    <faultstring>Server did not recognize the value of HTTP Header SOAPAction: HelloWorld.</faultstring> 
     <detail /> 
    </soap:Fault> 
</soap:Body> 
</soap:Envelope> 

这里是我的Objective-C代码

-(IBAction)buttonClick:(id)sender 
{ 
recordResults = FALSE; 

NSString *soapMsg = 
[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" 
"<HelloWorld xmlns=\"http://tempuri.org/\" />\n" 
"</soap:Body>\n" 
"</soap:Envelope>\n"]; 

//---print it to the Debugger Console for verification--- 
NSLog(soapMsg); 

NSURL *url = [NSURL URLWithString: @"http://servicing2.rotanet.com.tr/service1.asmx"]; 
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url]; 
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:req delegate:self]; 

//---set the various headers--- 
NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMsg length]]; 
[req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[req addValue:@"HelloWorld" forHTTPHeaderField:@"SOAPAction"]; 
[req addValue:msgLength forHTTPHeaderField:@"Content-Length"]; 

//---set the HTTP method and body--- 
[req setHTTPMethod:@"POST"]; 
[req setHTTPBody:[soapMsg dataUsingEncoding:NSUTF8StringEncoding]]; 


theConnection = [[NSURLConnection alloc] initWithRequest:req delegate:self]; 
if (theConnection) { 
    webData = [[NSMutableData data] retain]; 
} 
} 

我一直在这2天。我疯了。你们有什么建议吗?

回答

1

替换此,

[req addValue: @"http://tempuri.org/HelloWorld [req addValue:@"HelloWorld" forHTTPHeaderField:@"SOAPAction"];" forHTTPHeaderField:@"SOAPAction"]; 

,而不是

[req addValue:@"HelloWorld" forHTTPHeaderField:@"SOAPAction"]; 
0

服务器无法找到与您要发送的请求对应的服务。您创建的SOAP事务发送:

"<HelloWorld xmlns=\"http://tempuri.org/\" />\n" 

客户端期望服务器了解哪些内容。在这种情况下,您的服务器不理解的交易请求,并返回:

Server did not recognize the value of HTTP Header SOAPAction: HelloWorld. 

看来,您的SOAP客户端就好了,只不过操作HelloWorld不对应于服务器上的任何东西。

检查服务器并确保这是一个有效的操作,并更正客户端发送有效操作请求或服务器以响应您发送的请求。

0

我想你已经通过了错误的SOAPAction

试试这个

[req addValue:@"http://tempuri.org/HelloWorld" forHTTPHeaderField:@"SOAPAction"]