Я использую ASIHTTPRequest для отправки данных на удаленный сервер на iPhone 4.2.1.Когда я отправляю следующий запрос на наш сервер, я получаю ответ 400 (я удалил IP-адрес):
NSString dataString = @"data1=00&data2=00&data3=00";
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:<ipremoved>]]];
[request appendPostData:[dataString dataUsingEncoding:NSUTF8StringEncoding]];
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"User-Agent" value:@"iphone app"];
[request addRequestHeader:@"Content-Type" value:@"application/octet-stream"];
request.delegate = self;
[request startAsynchronous];
Когда я отправляю те же данные с помощью curl, я получаю ответ 200:
curl -H "User-Agent: iphone app" -H "Accept:" -H "Content-Type:application/octet-stream" --data-ascii "data1=00&data2=00&data3=00" --location <ipremoved> -v
Мой коллега заявляет, что в случае сбоя ASIHTTPRequest требуется две операции чтения сокетов: одна для заголовка и одна для данных.Судя по всему, сервер не оборудован для правильного анализа, поэтому я пытаюсь обойти это.
Если я настрою прокси между iPhone и Mac и запустю Paros (для просмотра пакетов), проблема исчезнет.Paros объединяет заголовок и данные таким образом, чтобы все они были получены сервером за одно чтение сокета.
Я пробовал несколько вещей, предложенных в других статьях, включая отключение постоянных соединений, но мне не повезло,Я также попытался сделать ASIHTTPFormRequest, но сервер не любит сгенерированный формат данных.
Любые предложения будут оценены.
Спасибо.