zoukankan      html  css  js  c++  java
  • 发送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"
    }

  • 相关阅读:
    ASP.NET Web API自身对CORS的支持:从实例开始
    通过扩展让ASP.NET Web API支持W3C的CORS规范
    通过扩展让ASP.NET Web API支持JSONP
    [CORS:跨域资源共享] W3C的CORS Specification
    [CORS:跨域资源共享] 同源策略与JSONP
    如何让ASP.NET Web API的Action方法在希望的Culture下执行
    唐伯虎的垃圾
    Razor Engine,实现代码生成器的又一件利器
    ASP.NET Web API路由系统:Web Host下的URL路由
    How ASP.NET Web API 2.0 Works?[持续更新中…]
  • 原文地址:https://www.cnblogs.com/zzxap/p/2175626.html
Copyright © 2011-2022 走看看