网络同步请求的步骤

1.NSString(address)转换成NSURL

2.先实例化网络请求,再把URL放到请求头中 (NSURLResquest)

3.发起请求(NSURLConnection)


eg.  

#import <UIKit/UIKit.h>


@interface ViewController : UIViewController


@property (retain, nonatomic) UIImageView *imageView;


@end



#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController

/**

 1.服务器是被动的,客户端不向服务器发起请求的话,他永远不会主动将数据返回给客户端,

 2.所有的数据都存储在远程的服务器之上

 3.向服务器发起网络请求,请求数据 返回的数据是 JSON 或者 XML

 4.客服端解析数据,刷新UI

 5.网络请求的接口必须由服务器提供

 */


/**

 

 1.完整的网络请求包含了 请求头(必须)+请求体

 2.网络请求头NSURLRequest

 */


- (void)dealloc

{

    [_imageView release];

    [super dealloc];

}


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    _imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 460)];

    [self.view addSubview:_imageView];

    

    

    //    NSString *unicodeStr = @"http://张三";//如果URL存在中文, 需要转化一下编码格式

    //    NSString *unicodeStr1 = [unicodeStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    

    NSString *addr = @"http://h.hiphotos.baidu.com/album/w%3D230/sign=9a603816960a304e5222a7f9e1c9a7c3/0824ab18972bd40752859fef7a899e510fb30965.jpg";

    //NSString转换成NSURL

    NSURL *url = [NSURL URLWithString:addr];

    

    [self sendSyncRequest:url];

    

    

}


- (void)sendSyncRequest:(NSURL*)url

{

    //先实例化网络请求,再把URL放到请求头中

    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];

    

    NSURLResponse *response;//服务器的响应头

    

    //客户端请求头发过去,服务器端的响应头返回来

    //发起同步请求后,阻塞在这一行,直到请求完成才继续走下去

    NSData *data =  [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];

    [request release];

    

    //将响应头强转成NSHTTPURLResponse(强转是为了得到statusCodeallHeaderFields)

    NSHTTPURLResponse *httpResponse = (NS