我正在使用NSURLConnection sendAsynchronousRequest
使用HTTP post请求从我的服务器获取用户ID。以下是我用来执行此操作的代码:
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
//....
NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"data string: %@", dataString);
//...
}];
当我使用Hurl.it测试请求以检查原始输出时,我得到一个数字字符串,如“13729”,如预期的那样。但是,NSLog输出将返回如下内容:
data string:
13729
如您所见,正在添加两个额外的换行符。我可以使用以下代码解决这个问题:
NSString *dataString = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
但是,我仍然想知道为什么会这样。有人可以解释一下吗?
答案 0 :(得分:0)
如评论中所述,NSString和NSURLConnection在这种情况下表现正常。数据<0d0a3331 303137>
以UTF-8字符CR LF
开头。这可能是由于服务器端错误导致插入值。
至于为什么Hurl.it没有在原始输出中显示它,可能是由于它们的结尾存在错误。正常的HTTP响应是:
{header1} CR LF
...
{headerN} CR LF
CR LF
{body}
您的回答是:
{header1} CR LF
...
{headerN} CR LF
CR LF
CR LF
{body}