【问题标题】:How to post data using PUT method in Swift 3? [duplicate]如何在 Swift 3 中使用 PUT 方法发布数据? [复制]
【发布时间】:2018-04-29 12:35:23
【问题描述】:

这里我需要使用PUT 方法将数据发布到服务器,但我无法发布它并且它在邮递员中工作正常。如果错误,我的 json 函数是否错误,任何人都可以帮助我如何实现它吗?

func itemsIncrementingandDecrementingtocartDownloadJsonWithURL(itemsApi: String){
        print(itemsApi)
        let url = URL(string: itemsApi)
        var request = URLRequest(url: url! as URL)
        request.httpMethod = "PUT"
        let parameters : [String: Any] = ["cartItem":
            [
                "item_id": itemId!,
                "qty": quantity!,
                "quote_id": "\(self.key!)"
            ]
        ]
        print(parameters)
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        let session = URLSession(configuration:URLSessionConfiguration.default, delegate: nil, delegateQueue: nil)
        let dataTask = session.dataTask(with: request) { (data, response, error) -> Void in

            if error != nil {

                //handle error
            }
            else {

                let jsonStr = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
                print("Parsed JSON: '\(jsonStr)'")
            }
        }
        dataTask.resume()
    }

【问题讨论】:

  • 您没有在请求中使用parameters dict?
  • 那么如何实现呢? @Tj3n
  • 我在询问 Json 作为 PUT 方法发布而不是发布 @Tj3n
  • 同一个东西,只是httpMethod不同
  • 不,我已经尝试过了,但它不起作用@Tj3n

标签: ios swift3


【解决方案1】:

首先将参数序列化为json字符串,并在请求http body中添加字符串。

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
request.httpBody = postData as Data

这会对你有所帮助。

【讨论】:

    【解决方案2】:

    尝试添加这个。

    let data = try! JSONSerialization.data(withJSONObject: parameters, options: JSONSerialization.WritingOptions.prettyPrinted)
    request.httpBody = data
    

    【讨论】:

    • 这已经过时了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2017-01-29
    • 2017-02-24
    • 2018-03-23
    相关资源
    最近更新 更多