iPhone中调用WCF服务是本文要介绍的内容,由于对移动平台充满着好奇与兴趣,最近着手了iPhone开发和学习。学习的路线是从objective-c到cococa。方法是看了两本入门的英文书,还有就是学习apple的sdk。对于产品的基本想法是服务端用.net,手机客户端用iPhone。
一些复杂的逻辑处理放到服务端实现,客户端与服务端通过XML交互,在iPhone客户端解析XML通过cocoa展示数据。由于iPhone和DoNet是两个完全不同的平台。iPhone依靠mac系统平台,donet依赖windows系统平台。这篇文章我将通过一个helloworld程序讲述一下通过WCF实现从mac系统到windows的跨平台的调用。
服务契约代码如下
2、在iPhone中调用WCF
与donet调用wcf服务不同,这里使用NSURLConnection去获取WCF服务端的数据,代码如下:(单击可放大)
NSString *soapMessage=[NSStringstringWithFormat:
@"\n"
"
"xmlns:xsd="http://www.w3.org/2001/XMLSchema"\n"
"xmlns:SOAP-ENC="http://schemas.xmlsoap.org/envelope/ "\n"
"SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/encoding/"\n"
"xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">\n"
"
"
"\n"
"\n"
""
];
NSURL *url=[NSURLURLWithString:@"http://10.5.23.117:8008/servicel.svc"];
NSMutableURLRequest*theRequest=[NSMutableURLRequestrequestWithURL:url];
NSString *msgLength=[NSStringstringWithFormat:@"%d",[soapMessage length]];
[theRequest addValue:@"text/xml;charset=utf-8"forHTTPHeaderField:@"Content-Type"];
[theRequestaddValue:@"http://tempuri.org/ISerVice1/GetData"forHTTPHeaderField:@"SOAPAction"];
[theRequest addValue:msgLengthforHTTPHeaderField:@"Content-Length"];
[theRequestsetHTTPMethod:@"POST"];
[theRequest setHTTPBody:[soapMessagedataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection*theConnection=[[NSURLConnection alloc]initWithRequest:urldelegate:self];
if (theConnection) {
webData=[[NSMutableDataalloc]retain];
}
else {
NSLog(@"the Connection isnil");
}
NSURLConnection的委托方法: