详解跨平台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服务                                       1、创建简单的WCF服务

服务契约代码如下  

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

 

2、在iPhone中调用WCF

与donet调用wcf服务不同,这里使用NSURLConnection去获取WCF服务端的数据,代码如下:(单击可放大)

 

NSString *soapMessage=[NSStringstringWithFormat:

  @"<?xmlversion="1.0" encoding"UTF-8"?>\n"

 "<SOAP-ENV:Envelope \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"

 "<SOAP-ENV:Body>\n"

  "<GetDataxmls="http://tempuri.org/">"

 "</GetData>\n"

 "</SOAP-ENV:Body>\n"

 "</SOAP-ENV:Envelope>"

  ];

 

 

   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)connectionDidFinishLoadi ng:(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];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值