我正在使用iphone中的ASIHttpRequest库,当我试图在下面的网址上做GET请求时,我得到了这个消息,请求失败,请任何人如果他/她遇到过这个问题或知道一个可能的解决方案,请让我知道。其次,如果我将链接粘贴到浏览器中,它可以很好地工作。
URL
http://www.rugsale.com/iphone/app/?type=product_list¶ms=id%3D334&ver=1.0&key=kaoud
错误
检测到不正确的NSStringEncoding值0x0000。假设是NSStringEncodingASCII。将在不久的将来停止这种兼容性映射行为。
提前进行Thx
问候
Syed Arsalan Pervez www.saplogix.net
发布于 2011-11-24 09:14:14
值得注意的是,如果在返回有效响应和设置请求编码之前调用[asiHttpRequest getResponseString] (即无法连接到服务器),则会发生这种情况。
解决此警告的最简单方法是编辑ASIHTTPRequest类,删除@synthesize responseEncoding并添加一个简单的自定义getter/setter,以便在未设置响应编码时可以返回默认编码:
- (NSStringEncoding) responseEncoding
{
return responseEncoding || self.defaultResponseEncoding;
}
- (void) setResponseEncoding:(NSStringEncoding)_responseEncoding
{
responseEncoding = _responseEncoding;
}对于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];
}发布于 2014-02-04 18:10:41
对我来说,问题是超时还不够。所以它返回一个空响应。所以它会给出这个错误,因为你正在尝试做一些响应为空的事情。我增加了它的时间。所以它解决了我的问题。[request setTimeOutSeconds:200];
发布于 2012-03-16 01:49:42
这就是说,当需要一个值时,编码是空的。尝试在源代码中搜索" encoding :nil“或"encoding:NULL”,并将其替换为有效的编码,例如NSStringEncodingASCII...
https://stackoverflow.com/questions/4317413
复制相似问题