【问题标题】:Bad request status code 400 after request请求后错误请求状态代码 400
【发布时间】:2017-10-05 09:10:08
【问题描述】:

为什么在下面的所有代码之后,在我执行 po NSKeyedUnarchiver.unarchiveObject(with: (response.request?.httpBody)!) 之后我得到 nil ?响应代码是 400。响应代码是 400 的原因,我相信是因为参数。有什么建议为什么会发生这种情况?

let urlRequest = NSMutableURLRequest(url: url)
let bodyData = parameters.first!.key + "=" + String(describing: parameters.first!.value)

urlRequest.bind(to: command!)
urlRequest.httpBody = bodyData.data(using: .utf8)
urlRequest.httpMethod = "POST"
urlRequest.allHTTPHeaderFields = NetworkManager.defaultHeaders()

return Alamofire.request(urlRequest.copy() as! URLRequest)

编辑:好的,所以我替换了一些行,现在代码看起来像这样,参数不再为零:

let urlRequest = NSMutableURLRequest(url: url)
let dataParameters: Data = NSKeyedArchiver.archivedData(withRootObject: parameters)

urlRequest.bind(to: command!)
urlRequest.httpBody = dataParameters
urlRequest.httpMethod = HTTPMethod.post.rawValue
urlRequest.allHTTPHeaderFields = NetworkManager.defaultHeaders()

return Alamofire.request(urlRequest.copy() as! URLRequest)

但即使这样,我也会得到一个 400 代码。因此,在与邮递员进行了一些调查后,我发现如果我像这样 {"xxxxx":"xxxxxxxxx"} 那样放置主体,它可以工作并且我得到一个很好的代码,但是如果我使用一个键和值它就不会。我该怎么做?

【问题讨论】:

    标签: ios swift alamofire nsurlrequest


    【解决方案1】:

    所以我找到了收到错误请求的原因,答案非常简单。只需要使用 json 序列化。

    我刚刚替换了这个

    let jsonData = try? JSONSerialization.data(withJSONObject: parameters)
    urlRequest.httpBody = jsonData
    

    有了这个

    let dataParameters: Data = NSKeyedArchiver.archivedData(withRootObject: parameters)
    urlRequest.httpBody = dataParameters
    

    我把这个留在这里,以防有人和我有同样的问题。

    【讨论】:

      猜你喜欢
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 2019-09-13
      • 2017-09-07
      • 2015-04-01
      • 2018-08-09
      • 2021-04-20
      相关资源
      最近更新 更多