Обнаружено неправильное значение 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, вероятно, придется обновить код, чтобы обеспечить совместимость.

Ошибка в том, где вы создаете строку. Вы не предоставляете кодировку, которая требуется.

Другие вопросы по тегам