因此,使用cURL
这是给定的示例
curl -X POST \
--header "Content-Type:application/json" \
-d @trace.json \
"https://api.mapbox.com/matching/v4/mapbox.driving.json"
这会返回准确的数据。
我想要实现的是相同但使用vanilla PHP
function sendRequest() {
// initialise the curl request
$request = curl_init('https://api.mapbox.com/matching/v4/mapbox.driving.json');
// send a file
curl_setopt($request, CURLOPT_POST, true);
curl_setopt(
$request,
CURLOPT_POSTFIELDS,
array(
'header' => 'Content-Type:application/json',
'file' => '@' . realpath('trace.json')
));
// output the response
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($request);
// close the session
curl_close($request);
}
sendRequest();
我试过这个,但这会返回一个无效的输入错误,尽管输入是从示例中复制的。
我有一种感觉,它要么是我要发送的CURLOPT_POSTFIELDS
,要么整个结构是错误的。
答案 0 :(得分:0)
使用CURLOPT_HTTPHEADER
,而不是将标头传递给POST
数据,如下所示:
curl_setopt($request, CURLOPT_HTTPHEADER, array(
'Content-Type:application/json'
));
curl_setopt($request, CURLOPT_POSTFIELDS, array(
'file_contents' => '@' . realpath('trace.json')
));