检测到不正确的NSStringEncoding值0x0000

Sye*_*vez 5 iphone asihttprequest ios4

我在iphone中使用ASIHttpRequest库,当我尝试在下面的URL上执行GET请求时,我收到此消息并且请求失败,如果他/她遇到此问题或者知道可能的解决方案请任何人请告诉我.其次,如果我将链接粘贴到浏览器中,它可以很好地工作.

[URL]

http://www.rugsale.com/iphone/app/?type=product_listms=id%3D334&ver=1.0&key=kaoud

[错误]

检测到不正确的NSStringEncoding值0x0000.假设NSStringEncodingASCII.将在不久的将来停止这种兼容性映射行为.

Thx提前

问候

Syed Arsalan Pervez www.saplogix.net

rva*_*lue 5

如果[asiHttpRequest getResponseString]在返回有效响应并且已设置请求编码(即无法连接到服务器)之前调用,则会发生这种情况.

解决此警告的最简单方法是编辑ASIHTTPRequest类,删除@synthesize responseEncoding并添加一个简单的自定义getter/setter,以便在未设置响应编码时返回默认编码:

- (NSStringEncoding) responseEncoding
{
    return responseEncoding || self.defaultResponseEncoding;
}

- (void) setResponseEncoding:(NSStringEncoding)_responseEncoding
{
    responseEncoding = _responseEncoding;
}
Run Code Online (Sandbox Code Playgroud)

getResponseString方法还有一个更具体的解决方法,我认为这是唯一使用编码而不检查值的地方 - 因为编码应该设置为任何非零长度响应:

- (NSString *)responseString
{
    NSData *data = [self responseData];
    if (!data) {
        return nil;
    }
    // --- INSERT THIS BLOCK ---
    // If the 'data' is present but empty, return a simple empty string
    if (data.length == 0) {
        return @"";
    }
    //assert(self.responseEncoding); // if you're into runtime asserts, uncomment this
    // --- END OF BLOCK TO INSERT ---
    return [[[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:[self responseEncoding]] autorelease];
}
Run Code Online (Sandbox Code Playgroud)


Tec*_*Zen -1

错误在于您创建字符串的位置。您没有提供所需的编码。