Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSString INITWITH DATA添加额外的换行符_Ios_Nsurlconnection_Nsdata - Fatal编程技术网

Ios NSString INITWITH DATA添加额外的换行符

Ios NSString INITWITH DATA添加额外的换行符,ios,nsurlconnection,nsdata,Ios,Nsurlconnection,Nsdata,我正在使用NSURLConnection sendAsynchronousRequest使用HTTP post请求从服务器获取用户id。以下是我用于执行此操作的代码: [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

我正在使用
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);
    //...
}];
当我使用检查原始输出来测试请求时,我得到了一个数字字符串,如预期的“13729”。但是,NSLog输出将返回如下内容:

data string: 

13729
如您所见,正在添加两个额外的换行符。我可以使用以下代码解决此问题:

NSString *dataString = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

然而,我仍然想理解为什么会发生这种情况。有人能解释一下吗?

如评论中所述,在这种情况下,NSString和NSURLConnection的行为是正确的。数据
以UTF-8字符
CR LF
开头。这可能是由于服务器端错误插入了值

至于为什么Hull.it没有在原始输出中显示这一点,这可能是由于其端部存在错误。正常的HTTP响应是:

{header1} CR LF
...
{headerN} CR LF
CR LF
{body}
{header1} CR LF
...
{headerN} CR LF
CR LF
CR LF
{body}
你的回答是:

{header1} CR LF
...
{headerN} CR LF
CR LF
{body}
{header1} CR LF
...
{headerN} CR LF
CR LF
CR LF
{body}

可能是因为不同的操作系统使用不同的字节来标记换行符。如果我没记错的话,Windows使用
/n/r
,OSX只使用
/n
。什么
[数据描述]
输出?@BrianNickel我得到类似
数据字符串的东西:
后跟
void\u WebThreadLockFromAnyThread(bool),0x1f661810:从主线程或web线程以外的线程获取web锁。不应从次线程调用UIKit。
0d 0a是换行符。这些来自服务器。好的,谢谢,我会查看服务器代码。为什么Hull.it显示的是原始输出,但没有任何换行符?