Это может быть вызвано тем, что определения границ не являются правильными на 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%.