如何使用 Perfect 在 CURL 中发出 post 请求
How to make post request in CURL with Perfect
我已经设置了一个 Perfect 服务器并且我已经写了我所有的 API 但是我卡在了 CURL,我不知道如何设置 headers我以前从未使用过 CURL。
我正在设置支付网关,我想设置授权 headers 并发送 body 数据,但我不知道如何设置。
来自示例http://perfect.org/docs/cURL.html
let curlObject = CURL(url: "http://www.perfect.org")
curlObject.perform {
code, header, body in
print("Request error code \(code)")
print("Response: \(curlObject.responseCode)")
print("Header: \(header)")
print("Body: \(body)")
}
我提到了这个但没有得到帮助怎么办?
经过大量搜索,我找到了一些东西
let url = "https://httpbin.org/post"
let postParamString = "key1=value1&key2=value2"
let byteArray = [UInt8](postParamString.utf8)
let curl = CURL(url: url)
let _ = curl.setOption(CURLOPT_POST, int: 1)
let _ = curl.setOption(CURLOPT_POSTFIELDS, v: UnsafeMutableRawPointer(mutating: byteArray))
let _ = curl.setOption(CURLOPT_POSTFIELDSIZE, int: byteArray.count)
curl.perform { code, header, body in
print("Request error code \(code) \n Response: \(curl.responseCode) \n Header: \(UTF8Encoding.encode(bytes:header)) \n Body: \(UTF8Encoding.encode(bytes: body))")
}
有关更多信息,请参阅此 C 示例
https://curl.haxx.se/libcurl/c/example.html
UnsafeMutableRawPointer 可能会在你异步时被杀死。这将正常工作:
import cURL
import PerfectCURL
public class CurlHTTPRequest {
public static func post(url: String, header: String, body: String, callback: @escaping (String)->Void) {
let byteArray:[UInt8] = Array(body.utf8)
let pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: byteArray.count)
pointer.initialize(from: byteArray, count: byteArray.count)
let curlObject = CURL(url: url)
curlObject.setOption(CURLOPT_POST, int: 1)
curlObject.setOption(CURLOPT_HTTPHEADER, s: header)
curlObject.setOption(CURLOPT_SSL_VERIFYPEER, int: 0)
curlObject.setOption(CURLOPT_POSTFIELDS, v: pointer)
curlObject.setOption(CURLOPT_POSTFIELDSIZE, int: byteArray.count)
curlObject.perform { (code, header, body) in
curlObject.close()
callback("Code: \(code)\n Header: \(String(bytes: header, encoding: .utf8) ?? "")\n Body: \(String(bytes: body, encoding: .utf8) ?? "")")
}
}
}
我已经设置了一个 Perfect 服务器并且我已经写了我所有的 API 但是我卡在了 CURL,我不知道如何设置 headers我以前从未使用过 CURL。
我正在设置支付网关,我想设置授权 headers 并发送 body 数据,但我不知道如何设置。
来自示例http://perfect.org/docs/cURL.html
let curlObject = CURL(url: "http://www.perfect.org")
curlObject.perform {
code, header, body in
print("Request error code \(code)")
print("Response: \(curlObject.responseCode)")
print("Header: \(header)")
print("Body: \(body)")
}
我提到了这个但没有得到帮助怎么办?
经过大量搜索,我找到了一些东西
let url = "https://httpbin.org/post"
let postParamString = "key1=value1&key2=value2"
let byteArray = [UInt8](postParamString.utf8)
let curl = CURL(url: url)
let _ = curl.setOption(CURLOPT_POST, int: 1)
let _ = curl.setOption(CURLOPT_POSTFIELDS, v: UnsafeMutableRawPointer(mutating: byteArray))
let _ = curl.setOption(CURLOPT_POSTFIELDSIZE, int: byteArray.count)
curl.perform { code, header, body in
print("Request error code \(code) \n Response: \(curl.responseCode) \n Header: \(UTF8Encoding.encode(bytes:header)) \n Body: \(UTF8Encoding.encode(bytes: body))")
}
有关更多信息,请参阅此 C 示例 https://curl.haxx.se/libcurl/c/example.html
UnsafeMutableRawPointer 可能会在你异步时被杀死。这将正常工作:
import cURL
import PerfectCURL
public class CurlHTTPRequest {
public static func post(url: String, header: String, body: String, callback: @escaping (String)->Void) {
let byteArray:[UInt8] = Array(body.utf8)
let pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: byteArray.count)
pointer.initialize(from: byteArray, count: byteArray.count)
let curlObject = CURL(url: url)
curlObject.setOption(CURLOPT_POST, int: 1)
curlObject.setOption(CURLOPT_HTTPHEADER, s: header)
curlObject.setOption(CURLOPT_SSL_VERIFYPEER, int: 0)
curlObject.setOption(CURLOPT_POSTFIELDS, v: pointer)
curlObject.setOption(CURLOPT_POSTFIELDSIZE, int: byteArray.count)
curlObject.perform { (code, header, body) in
curlObject.close()
callback("Code: \(code)\n Header: \(String(bytes: header, encoding: .utf8) ?? "")\n Body: \(String(bytes: body, encoding: .utf8) ?? "")")
}
}
}