详解跨平台iPhone中调用WCF服务(soap通信)

iPhone中调用WCF服务是本文要介绍的内容,由于对移动平台充满着好奇与兴趣,最近着手了iPhone开发和学习。学习的路线是从objective-c到cococa。方法是看了两本入门的英文书,还有就是学习apple的sdk。对于产品的基本想法是服务端用.net,手机客户端用iPhone

一些复杂的逻辑处理放到服务端实现,客户端与服务端通过XML交互,在iPhone客户端解析XML通过cocoa展示数据。由于iPhone和DoNet是两个完全不同的平台。iPhone依靠mac系统平台,donet依赖windows系统平台。这篇文章我将通过一个helloworld程序讲述一下通过WCF实现从mac系统到windows的跨平台的调用。

1、创建简单的WCF服务详解跨平台iPhone中调用WCF服务(soap通信)_第1张图片                                       1、创建简单的WCF服务

服务契约代码如下  

详解跨平台iPhone中调用WCF服务(soap通信)_第2张图片

 

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"

 "\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的委托方法:



-(void)connection:(NSURLConnection *)connectiondidReceiveResponse:(NSURLResponse *)response
{
[receivedData setlength:0];
}
- (void)connection:(NSURLConnection *)connectiondidReceiveData:(NSData *)data
{
[receivedData appendData:data];

return;
}
- (void)connectionDidFinishLoading:(NSURLConnection*)connection
{
  1.  NSString *theXML = [[NSString alloc]initWithBytes: [webData mutableBytes] length:[webData length]encoding:NSUTF8StringEncoding];
  2.         NSLog(theXML);
  3.         [theXMLrelease];
  4.         
  5.         //重新加載xmlParser
  6.         if(xmlParser )
  7.         {
  8.                 [xmlParserrelease];
  9.         }
  10.         
  11.         xmlParser= [[NSXMLParser alloc] initWithData: webData];
  12.         [xmlParsersetDelegate: self];
  13.         [xmlParsersetShouldResolveExternalEntities: YES];
  14.         [xmlParserparse];
  15.         
  16.         [connectionrelease];
  17.         //[webDatarelease];

你可能感兴趣的:(网络通信&解析,wcf,iphone,跨平台,soap,cocoa,平台)