【问题标题】:Bad request -400 status code错误请求 -400 状态码
【发布时间】:2011-05-05 19:13:45
【问题描述】:

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

【问题讨论】:

  • 您在 Web 服务器日志中遇到什么错误?

标签: 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 中是不正确的(可能带有斜杠或其他“坏”符号)

    【讨论】:

    • 感谢检查base64转换+1的好链接。
    猜你喜欢
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2020-10-21
    • 2019-09-13
    • 2017-09-07
    • 2015-04-01
    • 2018-08-09
    • 1970-01-01
    相关资源
    最近更新 更多