ios开发网络编程-创新互联

网络上搜索关于ios网络编程基本就首页全是讲的同一篇文章,被转烂了。

创新互联是一家专业提供高邮企业网站建设,专注与网站制作、网站设计H5场景定制、小程序制作等业务。10年已为高邮众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

找了半天没找到源文出处。下面是可以参考的一部分。

主要将了两部分:1.网络检测;2.简单的NSURLConnection链接以及设置代理。

问了下朋友,基本说现在都用

HTTP包装开源项目ASIHTTPRequest。

但这边我们还是从最原始的框架提供的API入手,后边我再去看下这个。

这边我就以最简单的例子来引入几个常用的API中的类。

[cpp] view plaincopy

//

//  NLViewController.m

//  NetWorkTest

//

//  Created by Nono on 12-5-16.

//  Copyright (c) 2012年 NonoWithLilith. All rights reserved.

//

#import "NLViewController.h"

@interface NLViewController ()

@end

@implementation NLViewController

@synthesize label = _label;

@synthesize data = _data;

@synthesize connection = _connection;

- (void)dealloc{

  [self.label release];

  [self.data release];

  [super dealloc];

}

- (void)viewDidLoad

{

  [super viewDidLoad];

  UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 10.0, 300.0, 400)];

  self.label = label;

  label.textAlignment = UITextAlignmentCenter;

  [label setNumberOfLines:0];

  label.lineBreakMode = UILineBreakModeWordWrap;

  self.label.text = @"正在在请求数据";

  [self.view addSubview:label];

  [label release];

  //step 1:请求地址

  NSString *urlString = @"http://www.google.com";

  NSURL *url = [NSURL URLWithString:urlString];

  //step 2:实例化一个request

  NSURLRequest *requrst = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0];

  //step 3:创建链接

  self.connection = [[NSURLConnection alloc] initWithRequest:requrst delegate:self];

  if ( self.connection) {

    NSLog(@"链接成功");

  }else {

    NSLog(@"链接失败");

  }

  [url release];

  [urlString release];

  [requrst release];

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

}

- (void)viewDidUnload

{

  self.label = nil;

  self.data = nil;

  [super viewDidUnload];

  // Release any retained subviews of the main view.

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

  return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

}

#pragma mark-

#pragma NSUrlConnectionDelegate methods

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

  //接受一个服务端回话,再次一般初始化接受数据的对象

  NSLog(@"返回数据类型:%@",[response textEncodingName]);

  NSMutableData *d = [[NSMutableData alloc] init];

  self.data = d;

  [d release];

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

  //接受返回数据,这个方法可能会被调用多次,因此将多次返回数据加起来

  NSUInteger datalength = [data length];

  NSLog(@"返回数据量:%d",datalength);

  [self.data appendData:data];

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

  //连接结束

  NSLog(@"%d:",[self.data length]);

  NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

  NSString *mystr = [[NSString alloc] initWithData:_data encoding:enc];

 // string i

  NSLog(@"最后的结果:%@",mystr);

  self.label.text = mystr;

  [mystr release];

  [self.connection release];

}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

{

  //链接错误

}

@end

简单说下:

1.最简单的网络链接,一个url,一个request,一个connection以及一个response返回。默认的是get请求。

2.data转码问题,这个一开始有点纠结。即,在最后我们要把NSData转化成NSString时候需要一个转码格式,一开始我习惯性的用了UTF-8,

然后发现转化后String 是Null,于是去打印了下请求返回的一些参数,显示的是GB2312~。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:ios开发网络编程-创新互联
本文来源:http://hbruida.cn/article/dogodj.html