您好我正在嘗試翻譯用 php 撰寫的 POST 請求 api 代碼:
<?php
$methodParams = '{
"date_confirmed_from": 1407341754,
"get_unconfirmed_orders": false
}';
$apiParams = [
"method" => "getOrders",
"parameters" => $methodParams
];
$curl = curl_init("https://api.baselinker.com/connector.php");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, ["X-BLToken: xxx"]);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($apiParams));
$response = curl_exec($curl);
對于 Swift,但我不知道為什么它不起作用:
import UIKit
struct Parameters: Codable {
let date_confirmed_from: Int
let get_unconfirmed_orders: Bool
}
struct BodyData: Codable {
let method: String
let parameters:Parameters
}
let url = URL(string: "https://api.baselinker.com/connector.php")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.allHTTPHeaderFields = [
"X-BLToken": "xxx"
]
let bodyData = BodyData(method: "getOrders", parameters: Parameters(date_confirmed_from: 1407341754, get_unconfirmed_orders: false))
let encoder = JSONEncoder()
do {
let encodeData = try encoder.encode(bodyData)
request.httpBody = encodeData
let session = URLSession(configuration: .default)
let task = session.dataTask(with: request) { (data, response, error) in
if let error = error {
print(error)
}
if let data = data {
}
}
task.resume()
}catch {
print(error)
}
當我測驗我的 Swift 代碼時,我從 API 得到錯誤答案,有人可以幫我找出代碼中的錯誤嗎?
uj5u.com熱心網友回復:
PHP curl 是否有效?
這不是基線檔案所要求的。
該檔案要求提供此帖子資料:
array (
'method' => 'getOrders',
'parameters' => '{"date_from": 1407341754}',
)
您的 PHP curl 請求發布資料:
'array (
'method' => 'getOrders',
'parameters' => '{
"date_confirmed_from": 1407341754,
"get_unconfirmed_orders": false
}',
)'
檔案
以 JSON 格式詢問引數 = 所請求函式的引數。
您的引數是一個陣列,而不是 JSON。
uj5u.com熱心網友回復:
好的,我找到了解決此問題的方法:
import UIKit
let url = URL(string: "https://api.baselinker.com/connector.php")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/x-www-form-urlencoded",forHTTPHeaderField: "Accept")
request.setValue("xxx",forHTTPHeaderField: "X-BLToken")
let data: Data = "method=getOrders¶meters={\"date_confirmed_from\": 1407341754&\"get_unconfirmed_orders\":false}".data(using: .utf8)!
request.httpBody = data
let session = URLSession(configuration: .default)
let task = session.dataTask(with: request) { (data, response, error) in
if let error = error {
print(error)
}
if let data = data {
let dataString = String(data: data, encoding: .utf8)
print(dataString!)
}
}
task.resume()
最大的問題是資料編碼。默認情況下,PHP 中的curl以 x-www-form-urlencoded 形式發送資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512921.html
標籤:php迅速代码休息卷曲
上一篇:PHP&Curl-處理XML回應
