发送HttpRequest请求

在开发应用程序的时候,特别是当今网络特别充足和重要的时候,网络应用和桌面应用史无前例的整合起来,其界限也越来越模糊。所以网络应用可以向桌面应用开放API,然后桌面应用去调用,这样可以方便的维护一份代码,并且可以push更新到用户手里。

而在设计的时候,通常情况下都是客户端发送相应的Http请求,并包含某些内容,发送完毕之后,等待服务器端的响应。而在服务器端,得到请求的内容并生成相应的结果返回即可。虽然这个过程很好理解,很简单,但是在Mac和iPhone开发上,还是有点麻烦,而且国内资料又少,所以这里我写一下如何实现发送HttpRequest请求,方便后面的同学。

这段代码可以适用与Mac OS X和iPhone应用。

界面我就用Mac的桌面应用做,因为简单,效果一样,界面可以做成如下模样,如何连接就各位自己去连接了,我前面的文章说的很明白了。

当我们按下按钮的时候,就去获取相应的网站/服务器的返回的请求。调用方法如下。

-  (IBAction)buttonClicked:(id)sender 

    NSString 
* receive  =  [RequestSender sendRequest: @" http://wt.jguoer.com " ]; 
    textbox.title 
=  receive; 
    NSLog(
@" Clicked " ); 
}

RequestSender是我写的一个类,这个类就是用于发送Http请求的,具体代码如下。 

#import  < Cocoa / Cocoa.h >  

@interface RequestSender : NSObject { 



+ (NSString*)sendRequest:(NSString*)url; 

@end

实现代码如下所示,我已经写了详细的注释了,所以我就不需要再多说什么了。

+  (NSString * )sendRequest:(NSString * )url 

    
// 准备发送httprequest  
    NSString  * urlString  =  url; 
    NSMutableURLRequest 
* request  =  [[[NSMutableURLRequest alloc] init] autorelease]; 
    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:
@" GET " ]; 
     
    
// 设置http头  
    NSString  * contentType  =  [NSString stringWithFormat: @" text/xml " ]; 
    [request addValue:contentType forHTTPHeaderField: 
@" Content-Type " ]; 
     
    
// 创建http内容 
    
// NSMutableData *postBody = [NSMutableData data]; 
    
// [postBody appendData:[[NSString stringWithFormat:@"<xml>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    
// [postBody appendData:[[NSString stringWithFormat:@"<your xml format code here/>"]
    //dataUsingEncoding:NSUTF8StringEncoding]]; 
    
// [postBody appendData:[[NSString stringWithFormat:@"</xml>"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     
    
// 设置发送内容 
    
// [request setHTTPBody:postBody]; 
     
    
// 获取响应  
    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]; 
     
    
// 返回的http状态  
    NSLog( @" Response Code: %d " , [urlResponse statusCode]); 
     
    
// 获取返回的内容  
     if  ([urlResponse statusCode]  >=   200   &&  [urlResponse statusCode]  <   300
    { 
        NSLog(
@" Response: %@ " , result); 
        
return  result; 
        
// 执行你想要的内容,代码可以写在这里  
    } 
     
    
return   @" Return value "
}

你可能感兴趣的:(request)