Пустое тело в POST в ASIHTTPRequest - PullRequest
       15

Пустое тело в POST в ASIHTTPRequest

6 голосов
/ 05 декабря 2010

Обычно я отправляю запрос POST с пустым телом данных:

  ASIHTTPRequest *request [ASIHTTPRequest alloc] init];
  [request setURL:[NSURL URLWithString:escapedUrlString]];
  [request setRequestMethod:@"POST"];
  [request addRequestHeader:@"Content-Type" value:@"application/xml"];
  [request startSynchronous];

Но я получаю этот ответ каждый раз:

Обнаружено неправильное значение NSStringEncoding 0x0000. Предполагая NSStringEncodingASCII. Остановит это поведение сопоставления совместимости в ближайшем будущем.

Мне интересно, обязательно ли устанавливать значения сообщений.

Ответы [ 2 ]

9 голосов
/ 05 декабря 2010

У меня нет большого опыта работы с оболочкой ASIHTTPRequest, но я вижу, что вы инициализируете ее с alloc:init, в то время как большинство примеров, которые я видел, имеют удобные инициализаторы requestWithURL:(NSURL*)url, т.е.

ASIHTTPRequest *request = [AIHTTPRequest requestWithURL:escapedUrlString];

Я бы сказал, что этот удобный инструмент initaliser также установит некоторые необходимые переменные для работы вашего почтового запроса, включая NSStringEnconding.

Из документации ASIHTTPRequest по адресу http://allseeing -i.com / ASIHTTPRequest / Как использовать # processing_text_encodings

Обработка текстовых кодировок

ASIHTTPRequest попытается прочитать кодировка текста полученных данных из заголовка Content-Type. Если оно находит кодировку текста, он установит кодирование отклика на соответствующий NSStringEncoding. Если не находит кодировка текста в заголовке, это будет использовать значение defaultResponseEncoding (по умолчанию в NSISOLatin1StringEncoding).

При звонке [запрос responseString], ASIHTTPRequest будет попытаться создать строку из данные, которые он получил, используя responseEncoding в качестве источника кодирование.

3 голосов
/ 15 июля 2011

Как говорит Рог, используйте initWithURL или requestWithURL. В любом случае, в моем случае проблема заключалась в том, что я подключался к медленному серверу, и время ожидания запроса истекло, выдав ошибку «Обнаружено неверное значение NSStringEncoding 0x0000».

Я решил это с помощью:

request.timeOutSeconds = 50;

Вы можете попробовать более 50 секунд, если ваш сервер работает медленнее.

...