如何使用iPad的Objective-C发送/接收肥皂对象 [英] How to send/receive soap object with objective-c for ipad

查看:55
本文介绍了如何使用iPad的Objective-C发送/接收肥皂对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试为ipad编写一个Objective-C应用程序,以发送/接收Soap Web服务.我已经写了一个代码,但是它给出了一个错误.该Web服务正在在线工作.

I have been trying to write a objective-c application for ipad to send/receive soap web service. I have written a code but it gives an error. the webservice is working online.

这是我的代码,

-(IBAction)invokeService
{

    [txt1 resignFirstResponder];

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


    NSLog(@"The request format is %@",soapFormat);

    NSURL *locationOfWebService = [NSURL URLWithString:@"http://servicing2.rotanet.com/service1.asmx"];

    NSLog(@"web url = %@",locationOfWebService);

    NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc]initWithURL:locationOfWebService];

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

    [theRequest addValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];
    [theRequest addValue:@"GetUserList" forHTTPHeaderField:@"SOAPAction"];
    [theRequest addValue:msgLength forHTTPHeaderField:@"Content-Length"];
    [theRequest setHTTPMethod:@"POST"];
    //the below encoding is used to send data over the net
    [theRequest setHTTPBody:[soapFormat dataUsingEncoding:NSUTF8StringEncoding]];


    NSURLConnection *connect = [[NSURLConnection alloc]initWithRequest:theRequest delegate:self];

    if (connect) {
        webData = [[NSMutableData alloc]init];
        startActivityIndicator;
    }
    else {
        NSLog(@"No Connection established");
    }
}

我收到此错误消息

<?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>System.Web.Services.Protocols.SoapException:  Server did not recognize the value of HTTP Header SOAPAction: GetUserList.
at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean&amp; abortProcessing)  </faultstring><detail /></soap:Fault></soap:Body></soap:Envelope>

我在做什么错了?

推荐答案

免责声明:我是WSClient ++的作者,它是一种商业产品.

Disclaimer: I am author of WSClient++ and it is a commercial product.

http://wsclient.neurospeech.com

创建简单的SOAP请求很容易,但是当您具有复杂的对象图时,处理字典和原始XML可能很耗时,WSClient ++会为每种复杂类型的SOAP代理生成Objective C源代码.您只需进行一个方法调用即可检索结果.

Creating simple SOAP requests are easy, however when you have complex graph of objects, dealing with Dictionaries and raw XML can be time consuming, WSClient++ generates Objective C source code for SOAP proxy with each complex type. You just make a single method call to retrieve results.

这篇关于如何使用iPad的Objective-C发送/接收肥皂对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆