我正在使用http post方法并将base64econded字符串传递给xml。但它给了我400回应。 XMl标签结构有效。当我从xml中删除这个base64encoded字符串时,它完美地工作。但包括它会给出错误(400)。 base64encoded字符串可能包含任何使我的请求无效的字符吗?欢迎任何帮助。
答案 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中可能不正确(可能使用斜线或其他“坏”符号)