使用 NSURLSession 进行 POST 请求和 GBK 编码的处理,这是请求以前一个接口服务的例子,因为接口比较旧,还在使用GBK编码,代码:

//1.构造URL

NSURL *url = [NSURLURLWithString:@"http://localhost:8090"];

//2.构造Request

NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];

//(1)设置为POST请求

[request setHTTPMethod:@"POST"];

//(2)超时

[request setTimeoutInterval:60];

//(3)设置请求头

//[request setAllHTTPHeaderFields:nil];

//(4)设置请求体

NSString *bodyStr = @"id=test&pwd=test&cmd=1";

NSData *bodyData = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];

//设置请求体

[request setHTTPBody:bodyData];

//3.构造Session

NSURLSession *session = [NSURLSessionsharedSession];

//4.task

NSURLSessionDataTask *task =

   [session dataTaskWithRequest:request completionHandler:

      ^(NSData *data, NSURLResponse *response, NSError *error) {

         NSLog(@"response URL: %@", response.URL);

         NSLog(@"response Content Length: %lld", response.expectedContentLength);

         NSLog(@"response Encoding Name: %@", response.textEncodingName);

         NSLog(@"response MIME Type: %@", response.MIMEType);

         NSStringEncoding gbkEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

         NSLog(@"response Content Data : %@",

            [[NSStringalloc] initWithData:data encoding:gbkEncoding]);

         NSHTTPURLResponse *responseHeader=(NSHTTPURLResponse*)response;

         NSLog(@"response Status Code : %ld", (long)responseHeader.statusCode);

         NSLog(@"response Header Data : %@", responseHeader.allHeaderFields);

}];

//5.执行

[task resume];

输出:

2016-04-11 13:58:02.399 test[2614:146749] response URL: http://localhost:8090/

2016-04-11 13:58:02.400 test[2614:146749] response Content Length: 22

2016-04-11 13:58:02.400 test[2614:146749] response Encoding Name: gbk

2016-04-11 13:58:02.400 test[2614:146749] response MIME Type: text/html

2016-04-11 13:58:02.401 test[2614:146749] response Content Data : success:帐号验证通过!

2016-04-11 13:58:02.401 test[2614:146749] response Status Code : 200

2016-04-11 13:58:02.401 test[2614:146749] response Header Data : {

   Connection = close;

   "Content-Language" = "zh-CN";

   "Content-Length" = 22;

   "Content-Type" = "text/html; charset=gbk";

}