iphone肥皂连接的想法

时间:2011-06-24 19:11:14

标签: iphone objective-c

我需要从IPhone连接到我的SOAP Web服务,我尝试了下面的方法,它起作用了:

NSURL *url = [NSURL URLWithString:@"http://w3schools.com/webservices/tempconvert.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://tempuri.org/CelsiusToFahrenheit" forHTTPHeaderField:@"SOAPAction"];
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

if( theConnection )
{
webData = [[NSMutableData data] retain];
}
else
{
 NSLog(@"theConnection is NULL");
}

这样我就可以从Service获得响应,首先我需要创建一些类,然后我需要解析这个XML并用它填充我的数据对象。我的问题是:

这种方法有什么问题?因为有像WSDL2ObjC这样的库可以从我的wsdl创建代码,或者cSOAP是一个客户端/服务器SOAP库。

使用SOAP库的唯一要点是我不需要编写我的XML将被解析成的类吗?只有在解析xml之后,看起来好像是一切都没问题,或者我错过了什么?

为什么不使用WSDL2Objc,请看我的问题here没有文档!

1 个答案:

答案 0 :(得分:2)

如果您从Web服务获得正确的响应,则您的工作已完成。 (您的代码看起来不错。)

关于结果的XML解析 - 您可以进行实施。对于简单的结果,您甚至可以使用NSScanner而不是深入NSXMLParser。如果您有兴趣在响应中解析XML,我建议使用NSXMLParser的原生XML解析委托机制,因为Apple认为这是处理XML的正确方法,我记得。 (如果响应中有JSON部分,您也可以使用JSON library for iOS处理它。)

或许,这些库可以更加通用,并为您提供一些性能优势。但我想您自己的实现将为您带来最佳性能优势。但是,在使用某些库之前,您可以查看代码或进行一些测量。我一直在寻找一个库,因为我不想实现一个功能,但当我看到有人在一个地方创建一个字符串时:

for()
{
    newSize = oldSize++;
    newStr = malloc(newSize);
    newStr = strcat(oldStr, newCharStr);
    free(oldStr);
}

我有点惊讶,因为在这种情况下他/她本可以只进行1-2次malloc通话而且复制的次数要少得多。

好吧,只要记住效率,你就没事。

相关问题