如何记录 HTTP POST 请求

Posted

技术标签:

【中文标题】如何记录 HTTP POST 请求【英文标题】:How to log HTTP POST Request 【发布时间】:2015-10-06 11:06:15 【问题描述】:

我是 Alamofire 和 Swift 的新手,所以请多多包涵。我正在尝试使用 Alamofire 将产品 JSON 上传到服务器。但是我不断收到状态码:400 failure。有什么方法可以记录发送到服务器的请求,以便我可以检查我的数据格式是否正确。我在下面提供了上传代码。

    static func uploadProduct(productJSON: [String : AnyObject]) 
    Alamofire.request(.POST, ServerConfig.ADD_PRODUCT_URL, parameters: productJSON, encoding: .JSON, headers: nil)
        .responseJSON(completionHandler:  responseRequest, responseResponse, responseResult in
            print(responseRequest!.URL)
            print(responseResponse)
            print(responseResult)
    )

这是我得到的错误。

sellers.strawmine.com/api/v1/products/add   status code: 400, headers 
Connection = "keep-alive";
Date = "Tue, 06 Oct 2015 10:53:44 GMT";
Server = "nginx/1.4.6 (Ubuntu)";
"Transfer-Encoding" = Identity;
 )
FAILURE

请帮忙。我在这方面花了很多时间。提前致谢!

【问题讨论】:

只是一个旁注,你为什么不使用ios自带的原生任务。它真的很强大。 没听说过这种事,请详细说明。 请检查例如this question关于发送post请求并解析响应json。 Another question, Another quesiton HTTP 400 = "错误请求"。您的productJSON 参数可能有误。 如果您使用的是 HTTP 而不是 HTTPS,还要检查 NSAppTransportSecurity ***.com/questions/31216758/… 【参考方案1】:

您收到 http 错误 400:http://www.checkupdown.com/status/E400.html

或者简单地说,错误的请求。

我认为您应该检查您的端点是否正确,以及您的服务器是否为该操作配置了路由。不确定你的后端是什么。

【讨论】:

【参考方案2】:

您应该通过遵循CustomDebugStringConvertible 协议来利用Request 对象中内置的cURL 支持。

let request = Alamofire.request(.POST, ServerConfig.ADD_PRODUCT_URL, parameters: productJSON, encoding: .JSON)
request.responseJSON  request, response, result in
        print(request!.URL)
        print(response)
        print(result)
    

debugPrint(request)

【讨论】:

以上是关于如何记录 HTTP POST 请求的主要内容,如果未能解决你的问题,请参考以下文章

http 请求 get 和post 区别

java + httpclient +post请求(记录下)

HTTP学习记录:请求方法

如果数据库中已存在记录,则阻止 HTTP POST 请求

Web Api如何传递POST请求

http协议的记录