【问题标题】:How to perform a curl request in swift?如何快速执行 curl 请求?
【发布时间】:2019-02-01 13:35:59
【问题描述】:

我正在尝试使用外部 API,它的 API 请求如下所示。我习惯于只有一个 url 的请求,但是我该如何处理“H”和“d”参数呢?我应该将它们包含在我的网址中还是

$ curl -X POST https://api.lucidtech.ai/v0/receipts \
  -H 'x-api-key: <your api key>' \
  -H 'Content-Type: application/json' \
  -d '{"documentId": "a50920e1-214b-4c46-9137-2c03f96aad56"}'

目前我有以下代码,但是我在哪里放置API密钥和文档ID?

@IBAction func getScannedData(_ sender: Any){
    guard let url = URL(string: "https://api.lucidtech.ai/v0/receipts") else {return}

    let session = URLSession.shared
    session.dataTask(with: url) { (data, response, error) in
        if let response = response{
            print(response)
        }


}

【问题讨论】:

  • -H 开关表示 HTTP 标头,-d 是请求正文。因此,请查看 Swift 的 HTTP 客户端库对设置标头和请求正文的参考。

标签: swift api curl


【解决方案1】:

这是一个如何将curl 命令转换为URLRequest 的示例:

guard let url = URL(string: "https://api.lucidtech.ai/v0/receipts"),
    let payload = "{\"documentId\": \"a50920e1-214b-4c46-9137-2c03f96aad56\"}".data(using: .utf8) else
{
    return
}

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("your_api_key", forHTTPHeaderField: "x-api-key")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = payload

URLSession.shared.dataTask(with: request) { (data, response, error) in
    guard error == nil else { print(error!.localizedDescription); return }
    guard let data = data else { print("Empty data"); return }

    if let str = String(data: data, encoding: .utf8) {
        print(str)
    }
}.resume()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-23
    • 2020-08-26
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2014-10-20
    • 1970-01-01
    相关资源
    最近更新 更多