iOS 网络编成代码片段

Post 提交数据方法:   

- (void)post

{

    NSString *postString = [NSStringstringWithFormat:@"         {\"userName\":\"%@\",\"userPass\":\"%@\",\"version\":\"1.0\"}",self.userField.text,self.passwordField.text]; 

    NSLog(@"%@",postString);

   //一般转化称UTF-8,这里服务器需要ASCII

    NSData* postData = [postStringdataUsingEncoding:NSASCIIStringEncodingallowLossyConversion:YES];

   NSMutableURLRequest *request = [[[NSMutableURLRequestalloc] init] autorelease];

    [requestsetURL:[NSURLURLWithString:@"http://lib.wap.zol.com.cn/test/login.php"]];

    [requestsetCachePolicy:NSURLRequestUseProtocolCachePolicy];

    [requestsetTimeoutInterval:100.0];

    [request setHTTPMethod:@"POST"];

    [request setHTTPBody:postData];

   // 应该是application/x-www-form-urlencoded,但对方服务器写成了appliction/x-www-form-urlencoded,告诉服务器是一个表单提交数据方式

    [requestsetValue:@"appliction/x-www-form-urlencoded"forHTTPHeaderField:@"Content-Type"];    

    //得到提交数据的长度

    NSString* len = [NSString stringWithFormat:@"%d", [postData length]];

    //添加一个http包头告诉服务器数据长度是多少

    [requestsetValue:len forHTTPHeaderField:@"Content-Length"];

    [NSURLConnectionconnectionWithRequest:request delegate:self];

}

接收数据方法:

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

{

    NSLog(@"didReceiveResponse");

}


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

{

    NSLog(@"didReceiveData");

    

    [self.mutabledataappendData:data];

}


- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

    NSLog(@"connectionDidFinishLoading");  

    self.strUser = [[NSStringalloc]initWithData:self.mutabledataencoding:NSASCIIStringEncoding];

}


// NSString值为Unicode格式的字符串编码(\u7E8C)转换成中文

//unicode编码以/u开头

+ (NSString *)replaceUnicode:(NSString *)unicodeStr 

{  

    

   NSString *tempStr1 = [unicodeStrstringByReplacingOccurrencesOfString:@"\\u"withString:@"\\U"];  

   NSString *tempStr2 = [tempStr1stringByReplacingOccurrencesOfString:@"\""withString:@"\\\""];  

   NSString *tempStr3 = [[@"\""stringByAppendingString:tempStr2] stringByAppendingString:@"\""];  

   NSData *tempData = [tempStr3dataUsingEncoding:NSUTF8StringEncoding];  

   NSString* returnStr = [NSPropertyListSerializationpropertyListFromData:tempData  

                                                          mutabilityOption:NSPropertyListImmutable   

                                                                    format:NULL  

                                                          errorDescription:NULL];  

    NSLog(@"%@",returnStr);

   return [returnStrstringByReplacingOccurrencesOfString:@"\\r\\n"withString:@"\n"];  

}  

我们知道,使用NSURLConnection的代理方法下载网页,存到一个NSData中,

1
2
NSMutableData *pageData;
[pageData appendData:data];

如果网页编码是UTF-8的,可以这么转换为字符串:

1
NSString *pageSource = [[NSString alloc] initWithData:pageData encoding:NSUTF8StringEncoding];

如果网页是gbk(或者gb2312),用UTF8转换的话,pageSource返回nil。这时需要使用gbk编码做转换,但是NSStringEncoding不含gbk,怎么办?用另一个方法处理一下:

1
2
NSStringEncoding gbkEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *pageSource = [[NSString alloc] initWithData:pageData encoding:gbkEncoding];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值