Обнаружено неправильное значение NSStringEncoding 0x0000
Я использую библиотеку ASIHttpRequest в iphone, и когда я пытаюсь выполнить GET-запрос по указанному ниже URL-адресу, я получаю это сообщение, и запрос не выполняется, пожалуйста, кто-нибудь, если он столкнулся с этой проблемой или знает возможное решение, пожалуйста, дайте мне знать, Во-вторых, если я вставлю ссылку в браузер, она будет работать отлично.
[URL]
http://www.rugsale.com/iphone/app/?type=product_list¶ms=id%3D334&ver=1.0&key=kaoud
[ОШИБКА]
Обнаружено неправильное значение NSStringEncoding 0x0000. Предполагая NSStringEncodingASCII. Остановит это поведение сопоставления совместимости в ближайшем будущем.
Спасибо заранее
С уважением
Сайед Арсалан Первез www.saplogix.net
5 ответов
Это особенно происходит, если вы звоните [asiHttpRequest getResponseString]
до того, как верный ответ был возвращен и кодировка запроса была установлена (т.е. не удалось подключиться к серверу).
Самый простой способ обойти это предупреждение - отредактировать ASIHTTPRequest
класс, удалите @synthesize responseEncoding
и добавление простого пользовательского метода получения / установки, чтобы вы могли вернуть кодировку по умолчанию, если кодировка ответа не установлена:
- (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];
}
Для меня проблема была в том, что тайм-аут не был достаточным. Таким образом, он возвращает пустой ответ. Это выдает ошибку, потому что вы пытаетесь что-то сделать с пустым ответом. Я увеличил время для этого. Так что это решило мою проблему.[request setTimeOutSeconds:200];
Это просто говорит о том, что кодировка была нулевой, когда ожидалось значение. Попробуйте выполнить поиск "encoding:nil" или "encoding:NULL" в исходном коде и замените его допустимой кодировкой, например NSStringEncodingASCII...
Это похоже на то, что появилось в 4.2 SDK. Я не видел этого, пока не обновил свою среду разработки самостоятельно.
All-Seeing Interactive, вероятно, придется обновить код, чтобы обеспечить совместимость.
Ошибка в том, где вы создаете строку. Вы не предоставляете кодировку, которая требуется.