iphone实现xml的post传递,并且接收数据

来源:互联网 发布:mysql官方文档有问题 编辑:程序博客网 时间:2024/04/30 12:29

在iphone开发中,经常会遇到和服务器端交互数据,下面代码是向服务器端传递一个xml数据流,服务器端接受数据并返回一个xml数据类型。

iphone传递数据的代码:

-(void) postxml 

    //prepar request 
    NSString *urlString = [NSString stringWithFormat:@"path"]; 
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:@"POST"]; 
    //set headers 
    NSString *contentType = [NSString stringWithFormat:@"text/xml"]; 
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 
    //create the body 
    NSMutableData *postBody = [NSMutableData data]; 
    [postBody appendData:[[NSString stringWithFormat:@"<Request  Action=/"Login/">"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithFormat:@"<Body>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithFormat:@"<Username>wangjun</Username>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithFormat:@"<Password>password</Password>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithFormat:@"<PlatformID>2</PlatformID>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithFormat:@"<PlatformVersion>3.1.3</PlatformVersion>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithFormat:@"<TaskViewerName>IP 1.3</TaskViewerName>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithFormat:@"<TaskViewerVersion>3</TaskViewerVersion>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithFormat:@"</Body>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithFormat:@"</Request>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    //post 
    [request setHTTPBody:postBody]; 
    //get response 
    NSHTTPURLResponse* urlResponse = nil;  
    NSError *error = [[NSError alloc] init];  
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];  
    NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
    NSLog(@"Response Code: %d", [urlResponse statusCode]); 
    if ([urlResponse statusCode] >= 200 && [urlResponse statusCode] < 300) { 
        NSLog(@"Response: %@", result); 
    } 
}

 

 

 

运行结果是:

2010-09-09 13:19:25.190 PostXmlDemo1[685:307] 点击我了,哈哈 
2010-09-09 13:19:28.450 PostXmlDemo1[685:307] Response Code: 200 
2010-09-09 13:19:28.456 PostXmlDemo1[685:307] Response: <Response  Action=’Login’><Cookie>DFGHJYUIILNBV$%^&*gghj^&IUF%^R^DFYUIHNVB</Cookie><Body><User Name=’用户名’ >< Avatar>登陆用户头像URL</Avatar></User><State>1</State><Description>登陆成功后的描述信息。</Description></Body></Response>

iphone端源代码:http://easymorse-iphone.googlecode.com/svn/trunk/PostXmlDemo1/

服务器端代码:https://mp.myvsp.cn/svn/works/exam/prototype/trunk/iphonepost/

原创粉丝点击