Неверный код запроса -400 - PullRequest
1 голос
/ 05 мая 2011

Я использую метод http post и передаю строку base64econded в xml.Но это дает мне 400 в ответ.Структура тега XMl действительна.Когда я удалил эту строку base64encoded из xml, она работает отлично.Но в том числе это дает ошибку (400).Может ли base64encoded строка содержать какой-либо символ, который делает мой запрос недействительным?Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 05 мая 2011

Это может быть вызвано тем, что определения границ не являются правильными на 100%, например.использование неправильного

Content-type: multipart/form-data, boundary=XXboundaryXX

вместо правильного

Content-type: multipart/form-data; boundary=XXboundaryXX

Это также могут быть ваши граничные разделители в теле, которые не используют правильный синтаксис, например.использование неправильного

--XXboundaryXX\r\n

вместо правильного

\r\n--XXboundaryXX\r\n

Следующий фрагмент должен быть корректным для публикации XML-данных, даже для некоторых более старых серверов Apache:

[request setValue:USER_AGENT forHTTPHeaderField:@"User-Agent"];
[request setTimeoutInterval: 15];
[request setHTTPMethod:@"POST"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField:@"Content-type"];

NSMutableData *postBody =  [NSMutableData data];
[postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Disposition: form-data; name=\"xmlstring\"\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[xml dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postBody];

Ранее я обнаружил ошибку 400 , если эти разделители не были правильными на 100%.

1 голос
/ 05 мая 2011

Проверьте ваш base64encoder. Вы можете сделать это здесь Я использую решение из этого обсуждения .

Если с вашим кодировщиком все в порядке, я полагаю, вы неправильно вставили его в свой xml (возможно, с косой чертой или другими «плохими» символами)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...