【问题标题】:Bad request -400 status code错误请求 -400 状态码
【发布时间】:2011-05-05 19:13:45
【问题描述】:
我正在使用 http post 方法并将 base64econded 字符串传递到 xml。但它给了我400作为回应。 XML 标记结构有效。当我从 xml 中删除这个 base64encoded 字符串时,它工作得很好。但包括它会给出错误(400)。 base64encoded 字符串是否可能包含使我的请求无效的任何字符?欢迎任何帮助。
【问题讨论】:
标签:
iphone
xmlhttprequest
【解决方案1】:
这可能是由于您的边界定义不是 100% 正确造成的,例如。用错了
Content-type: multipart/form-data, boundary=XXboundaryXX
而不是正确的
Content-type: multipart/form-data; boundary=XXboundaryXX
也可能是正文中的边界分隔符没有使用正确的语法,例如。用错了
--XXboundaryXX\r\n
而不是正确的
\r\n--XXboundaryXX\r\n
对于发布 xml 数据,以下 sn-p 应该是正确的,即使对于 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。
【解决方案2】:
检查您的 base64 编码器。你可以做到here
我正在使用来自this discussion 的解决方案。
如果您的编码器没问题,我想您将其粘贴到您的 xml 中是不正确的(可能带有斜杠或其他“坏”符号)