2010-09-09 109 views
0

我正在从iPhone连接到SOAP webservice。我无法连接网络服务。这里我包含了我的代码:如何连接SOAP Web服务?

 NSString *soapMessage = [NSString stringWithFormat: 
     @"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" 
     "<SOAP-ENV:Envelope \n" 
     "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \n" 
     "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n" 
     "xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" \n" 
     "SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" \n" 
     "xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"> \n" 
     "xmlns:mob=\"http://XXX.edu\">\n" 
     "<SOAP-ENV:Body> \n" 
     "<mob:Login>\n" 
     "<mob:username>User Name</mob:username>\n" 
     "<mob:password>Password</mob:password>\n" 
     "</mob:Login>\n" 
     "</SOAP-ENV:Body> \n" 
     "</SOAP-ENV:Envelope>"]; 



     NSURL *url = [NSURL URLWithString:@"https://YYY.edu/UserService.svc"]; 

     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

     NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]]; 

     [request addValue: @"Login" forHTTPHeaderField:@"SOAPAction"]; 

     [request addValue: @"text/xml; charset=\"utf-8" forHTTPHeaderField:@"Content-Type"]; 

     [request addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 

     [request setValue:@"https://YYY/UserService" forHTTPHeaderField:@"Host"]; 

     [request setHTTPMethod:@"POST"]; 

     [request setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

     NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 


     WSDL URL : https://XXX/UserService.svc?wsdl 

     End point : https://XXX/UserService.svc 


     **WSDL XML format** 

     <wsdl:definitions name="UserService" targetNamespace="http://tempuri.org/"> 
     <wsdl:import namespace="http://YYY/" location="https://XXX/UserService.svc/basic?wsdl=wsdl1"/> 
     <wsdl:types/> 
     <wsdl:service name="UserService"> 
     <wsdl:port name="ZZZ" binding="i0:ZZZ"> 
     <soap:address location="https://XXX/UserService.svc"/> 
     </wsdl:port> 
     </wsdl:service> 
     </wsdl:definitions> 


     This is the XMl format and request input i had used. I cant connect with the web service. I got the error message (response) is either empty or "<h1>Bad Request (Invalid Hostname)</h1>". 

     where i am getting lack. Please any one help me. 

     Thanks in advance. 

回答

0

尝试更改主机,在web服务中,您可以检查主机标头以与发布Web服务的主机相匹配。可能将标题“Host:”参数设置为正确的值可以解决问题。在主题参数中只放置主机:端口。