我正在尝试为jet.com提供json有效负载,但我每次都收到NULL作为响应,我不确定我做错了什么。
我创建了一个如下所示的json有效负载:
{
"alt_order_id": "12345",
"shipments": [
{
"alt_shipment_id": "11223344",
"shipment_tracking_number": "1Z12342452342",
"response_shipment_date": "2014-06-11T18:00:00.0000000-04:00",
"response_shipment_method": "ups_ground",
"expected_delivery_date": "2014-06-11T18:00:00.0000000-04:00",
"ship_from_zip_code": "12061",
"carrier_pick_up_date": "2014-06-11T18:00:00.0000000-04:00",
"carrier": "UPS",
"shipment_items": [
{
"alt_shipment_item_id": "129900120",
"merchant_sku": "15a1010",
"response_shipment_sku_quantity": 1
}
]
}
]
}
我首先尝试过GuzzleHttp但是无法弄清楚要使用什么作为有效载荷的关键并且不断出错,所以我选择尝试使用cURL。
我创造了这个:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://merchant-api.jet.com/api/orders/'.$order_id.'/shipped');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
dd($ch);
$res = curl_exec($ch);
但是我继续回到null,因为响应和项目没有更新。当我死去并转储时,我得到了这个:
curl resource @290 ▼
url: "https://merchant-api.jet.com/api/orders/000000000/shipped"
content_type: null
http_code: 0
header_size: 0
request_size: 0
filetime: 0
ssl_verify_result: 0
redirect_count: 0
total_time: 0.0
namelookup_time: 0.0
connect_time: 0.0
pretransfer_time: 0.0
size_upload: 0.0
size_download: 0.0
speed_download: 0.0
speed_upload: 0.0
download_content_length: -1.0
upload_content_length: -1.0
starttransfer_time: 0.0
redirect_time: 0.0
redirect_url: ""
primary_ip: ""
certinfo: []
primary_port: 0
local_ip: ""
local_port: 0
}
关于我做错的任何想法?我知道我的OAuth密钥正在工作,因为我能够在标头中传递数据。谢谢,如果有什么明显的话,请告诉我。我是cURL的新手。
答案 0 :(得分:1)
使用guzzle时,json数据作为传递guzzle请求方法的$ options数组的一部分传入。
一个例子:
<?php
$options = array(
'json' => array(
'data' => 'value',
'more' => 'data'
),
);
$guzzle->request("POST", "http://some.api/putJson", $options);
选项数组中存储在'json'键下的所有数据都将在请求中传递。
希望这有帮助
编辑:PUT请求
PUT请求不应使用“ json ”选项键发送数据,而应使用“正文”键。
示例PUT请求:
<?php
$options = array(
'body' => array(
'data' => 'value',
'more' => 'data'
),
);
$guzzle->request("PUT", "http://some.api/putJson", $options);