【问题标题】:Swift 3 Data in post request is not submitted when content-type is setted设置内容类型时,未提交发布请求中的 Swift 3 数据
【发布时间】:2017-09-02 17:33:43
【问题描述】:

我目前正在尝试从我的应用向我的休息服务发出发布请求。

现在,当我没有为请求设置 Content-Type 值时,我的 rest-service 获取数据,但不是 json。 我认为,设置内容类型标头将是解决方案,但是设置后,我的休息服务不会收到任何数据。 (但标题正确设置为“application/json ...” 我是 swift 新手,我想知道是否有人可以帮助我解决这个问题。

谢谢!

【问题讨论】:

  • 请勿将代码发布为图片。 Edit您的问题并将图片替换为您的实际代码,作为文本,复制并粘贴。代码图片无法搜索和引用。
  • 您是否 100% 确定 Web 服务需要 JSON 并且您提供的 JSON 格式正确?
  • 无关的,不要使用NSMutableURLRequest。执行var request = URLRequest(url: url!),然后将不再需要转换为URLRequest

标签: json swift post swift3


【解决方案1】:

我建议在 Swift 中使用 Alamofire 来处理网络请求。此外,如果您处理 JSON 数据,我会使用 SwiftyJSON 库。然后你可以像这样发出网络请求:

//start activity indicator here

    Alamofire.request("https://urlhere.com" , method: .post).validate().responseJSON { response in

        switch response.result {

        case .success(let value):

              if let json = JSON(value) {

               let name = json["name"].stringValue

                //hide activity indicator here

               }
               else
                {
                 //No data returned
                }

        case .failure(let error):
            print(error)
            //show error indicator here

        }

    }

如果响应返回到 200 范围内,您可以运行一些代码,如果返回任何其他内容,它将失败,您可以在那里捕获任何错误。您还可以在以下代码中启动和停止活动指示器,以便用户注意到正在发生后台操作。

编辑: 这一切都假设您的网络服务返回 JSON 数据。我没有任何方法可以验证,但如果可以,获取它应该很简单。

【讨论】:

    【解决方案2】:

    如果内容类型是 JSON 或纯文本,请咨询您的后端开发人员

    如果纯文本只使用 text/plain; charset=UTF-8

    你可以用任何海报插件检查这个检查这个 https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en

    【讨论】:

      猜你喜欢
      • 2012-04-07
      • 1970-01-01
      • 2017-01-19
      • 1970-01-01
      • 2016-12-24
      • 2018-07-19
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多