错误请求-400状态代码

时间:2011-05-05 10:32:02

标签: iphone xmlhttprequest

我正在使用http post方法并将base64econded字符串传递给xml。但它给了我400回应。 XMl标签结构有效。当我从xml中删除这个base64encoded字符串时,它完美地工作。但包括它会给出错误(400)。 base64encoded字符串可能包含任何使我的请求无效的字符吗?欢迎任何帮助。

2 个答案:

答案 0 :(得分:2)

这可能是由于您的边界定义不是100%正确,例如。使用错误的

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

而不是正确的

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

它也可能是你身体中没有使用正确语法的边界分隔符,例如。使用错误的

--XXboundaryXX\r\n

而不是正确的

\r\n--XXboundaryXX\r\n

以下代码片段对于发布xml数据应该是正确的,即使是对于那些som nitty gritty较旧的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];

如果这些分隔符不是100%正确,我之前已discovered error 400

答案 1 :(得分:1)

检查你的base64encoder。你可以做到here 我正在使用this discussion的解决方案。

如果您的编码器没问题,我认为您将其粘贴到xml中可能不正确(可能使用斜线或其他“坏”符号)