【问题标题】:Receiving Corrupted Info From Server从服务器接收损坏的信息
【发布时间】:2012-04-11 18:10:01
【问题描述】:

在 Iphone 和 android 上,我收到 200 的响应代码,这意味着我得到了有效且良好的响应,没有错误,但我收到的 json 有额外的字符。我打印出我收到的 NSData,它的长度为 580,并且 NSString,至少在它失败时,将具有更大的长度并在 json 的末尾打印 n+ 个额外的字符。我不确定为什么会这样,但我想我会看看是否有人能看到我做错了什么。

NSString *post = [NSString stringWithFormat:@"referer=%@&username=%@&password=%@", referer, username, password];
NSData *pData = [post dataUsingEncoding: NSUTF8StringEncoding allowLossyConversion:YES];
NSString *pLength = [NSString stringWithFormat:@"%d", [pData length]];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
    [request setURL:self.url];
    [request setHTTPMethod:@"POST"];
    [request setValue:pLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:pData];
    [request setTimeoutInterval:30];

NSHTTPURLResponse *response = nil;
    NSError *err = nil;
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
    NSString *sData = [NSString stringWithUTF8String:[data bytes]];

我没有收到任何错误,我收到的每个响应代码都是 200。我也打印出了所有这些值。数据长度为 580,并且 sData 有时会有所不同,但当它通过时,长度将为 580,但这可能会因不同情况而改变。对于使用该系统的其他用户,数据并不总是 580。

回答:

我解决了问题而不是使用

NSString *sData = [NSString stringWithUTF8String:[data bytes]];

你应该使用

NSString *sData = [[NSString alloc] initWithData: data encoding: NSUTF8String];

这将根据 NSData 对象分配正确的空间量,因此 NSString 永远不会尝试访问或存储更多空间,这些空间可能位于应该访问的最后一个地址后面。

【问题讨论】:

    标签: nsstring nsdate corrupt nsmutableurlrequest


    【解决方案1】:

    回答:

    我解决了问题而不是使用

    NSString *sData = [NSString stringWithUTF8String:[data bytes]]; 你应该使用

    NSString *sData = [[NSString alloc] initWithData: 数据编码: NSUTF8String]; 这将根据 NSData 对象分配正确的空间量,因此 NSString 将永远不会尝试访问或存储可能位于应访问的最后一个地址后面的更多空间。

    【讨论】:

      猜你喜欢
      • 2019-10-01
      • 2012-12-03
      • 2013-12-29
      • 2018-01-29
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多