【问题标题】:IOS url request issueIOS url请求问题
【发布时间】:2018-02-13 17:25:11
【问题描述】:

我想在 ios 应用程序中将手机号码和密码发送到服务器。后端团队提供了如下图所示的邮递员 API。

作为表单数据发送成功

以下 Swift URL 请求失败,我在这里做错了什么?

  func sendReq() {
    let Url                 = String(format: "http://xxxxxxx/mobile/request_otp")
    guard let serviceUrl    = URL(string: Url) else { return }
    let parameterDictionary = ["mobile_number" : "xxxxxxxxxx", "password" : "12345678"]
    var request             = URLRequest(url: serviceUrl)
    request.httpMethod      = "POST"
    request.cachePolicy     = .useProtocolCachePolicy
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")

    //  params dict as data
    guard let httpBody = try? JSONSerialization.data(withJSONObject: parameterDictionary, options: []) else {
        return
    }
    request.httpBody        = httpBody

    // session
    let session             = URLSession.shared

    //data task
    session.dataTask(with: request) { (data, response, error) in
        if let response = response {
            print(response)
        }
        if let data = data {
            do {
                let json = try JSONSerialization.jsonObject(with: data, options: [])
                print(json)
            }
            catch {
                print(error)
            }
        }
        }.resume()
}

但是上面的 API 调用会抛出类似的错误

{
    error = TRUE;
    message = "All fields Required!";
}

【问题讨论】:

  • (params as! Data)...你是如何创建params的?那是什么?
  • {"mobile_number":"xxxxxxxxxx","password":"12345678"} 使用 jsonEncoder.encode() 转换为数据
  • 您不能让您的“服务器团队”在服务器日志中查找确切的错误原因,即请求中缺少哪个字段吗?
  • 您在请求标头中的Content-Length 到底是在哪里设置的?

标签: ios swift xcode


【解决方案1】:

设置Content-Type HTTP 标头:

request.allHTTPHeaderFields = ["Content-Type": "application/json"]

这样您就可以通知服务器您正在发送 JSON。

【讨论】:

    【解决方案2】:

    你可以试试:

    {\"mobile_number\":xxxxxxxxxx,\"password\":12345678}
    

    然后选择 Application/Json 而不是文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多