簡體   English   中英

在PHP中使用curl將標題和URL發布到網站?

[英]using curl in php to post a head and URL to a website?

我想知道如何使用php中的curl將數據發布到名為Oanda的網站。 通話的說法應該像這樣: curl -i -H "X-Accept-Datetime-Format: UNIX" "https://api-fxpractice.oanda.com/v1/candles?instrument=EUR_USD&start=137849394&count=1"

我已經編寫了這段代碼來嘗試在php中執行以下操作:

<?php
$ch = curl_init();
$url = "http://api-sandbox.oanda.com/v1/prices?instruments=EUR_USD&side=buy";
$head = " X-Accept-Datetime-Format: UNIX";
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true); // header will be at output
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $head); // HTTP request is 'HEAD'
$content = curl_exec ($ch);
echo "<p>" . $content . "</p>";
curl_close ($ch);
?>

當我在沒有標題的情況下運行此文件時,它工作正常,但在標題下卻出現以下錯誤: HTTP/1.1 400 Bad Request Server: openresty/1.7.0.1 Date: Fri, 25 Sep 2015 17:18:56 GMT Content-Type: application/json Content-Length: 137 Connection: close ETag: "53f4b7f5-89" { "code" : 400, "message" : "Bad Request", "moreInfo" : "http:\\/\\/developer.oanda.com\\/docs\\/v1\\/troubleshooting\\/#errors" }

它們在我的代碼中是錯誤的還是我的代碼正常,但是我在標題中使用了錯誤的調用。 如果我的代碼是錯誤的,可以為我提供示例代碼,還是可以在哪里學習如何修復它? 另外,他們是我要向服務器發出的另一個請求。 該網站說要這樣: $curl -X POST -d "instrument=EUR_USD&units=1000&side=buy&type=market" https://api-fxpractice.oanda.com/v1/accounts/6531071/orders

我不知道-X的含義以及如何將其轉換為php代碼。 示例代碼或有關如何工作的教程的鏈接將非常有用。 感謝您的時間和幫助!

首先,您需要從$head變量的值中刪除前導空格。 所以:

$head = 'X-Accept-Datetime-Format: UNIX';

接下來,要發送自定義標頭,您應該說:

curl_setopt($ch, CURLOPT_HTTPHEADER, array($head) );

你在哪里做curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $head); ,這是在告訴服務器您的請求類型(通常應為GETPOST )是X-Accept-Datetime-Format: UNIX ,很顯然,這對於HTTP / HTTPS請求類型沒有意義。

現在,對於第二個問題, -X POST被用作命令行標志,以指定HTTP請求類型為POST 因此,要復制此代碼,您可以編寫: curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 但是,如果您未指定CURLOPT_CUSTOMREQUEST參數,則默認情況下,如果您在請求正文中上傳數據,PHP的curl將自動將請求類型設置為POST ;因此此行是不必要的。 )另外,要發送POST請求,您您需要在請求標頭中包含content-length和content-type。

有關curl中HTTP POST請求的更多信息,請查看以下鏈接: http : //www.lornajane.net/posts/2011/posting-json-data-with-php-curl

要弄清楚Oanda在示例中使用的某些命令行選項,請查看curl手冊頁: http : //curl.haxx.se/docs/manpage.html

有關PHP的cURL實現的更多信息,您應該閱讀以下文檔: http : //www.php.net/manual/zh/function.curl-setopt.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM