[英]PHP Curl post request not working no post
它沒有發送發布請求。 我不確定原因為何,或者我做錯了什么。
這是數據庫中的API:
//servapi added to code for clarity
$servapi = "https://(hidingwebsiteforthispost).com/api.php?key=(my_key)&service=31&action=order&profile=[link]&amount=[amount]"
//original code
$arrayFind = array(
'[link]',
'[amount]'
);
$arrayReplace = array(
$link,
$quanity
);
$APILink = $servapi;
$APILink = str_replace($arrayFind, $arrayReplace, $APILink);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $APILink);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_exec($ch);
curl_close($ch);
主持人添加:
用戶正在通過檢查目標服務器上的帳戶來驗證POST請求是否成功。 如果成功,將在他的帳戶下開始一個新訂單。 當他使用來自requestmaker.com的API字符串時,將創建一個新訂單,但是當他運行上述代碼時,則不會創建一個新訂單。
當使用var_dump檢查curl_exec($ch)
返回的數據包時,用戶指出響應為空。
用戶還更新了他的代碼,將CURLOPT_POST設置為true。
您實際上不是在進行發布請求,而是要添加
curl_setopt($ch, CURLOPT_POST, true);
為了發送POST請求。
有關更多信息,請參見curl文檔 ,尤其是curl_setopt文檔 。
除了@nvisser的建議外,您還應該捕獲並查看curl請求的響應。 如下更改您的curl_exec
:
$response = curl_exec($ch);
由於已將CURLOPT_RETURNTRANSFER設置為TRUE,因此curl_exec將所有響應封裝為字符串,並將其返回到您選擇的變量中。
輸出響應,您可能會找到更多信息來幫助您診斷問題。
在討論后添加評論 :
這是我們應該做的:
由於您無法控制網絡,因此請嘗試在虛擬專用服務器上安裝和激活Web服務器,以便可以在http://localhost/fakeServer.php
接收和處理請求。
安裝Apache2或NGINX並對其進行設置后, fakeServer.php
在該Web目錄的根目錄中創建一個名為fakeServer.php
的小程序,並將API URL設置為http://localhost/fakeServer.php
。 在該腳本內,創建一個日志,該腳本在每次運行腳本時輸出$_POST
標頭的內容。
通過這種方式,您可以證明您的腳本是否正在向服務器發送請求以及請求的外觀。 這將幫助您調試腳本使用API類,並確認所有代碼都已經格式化好,運行正常。
讓fakeServer.php
輸出響應,並在程序中檢查該響應。 如果一切正常,來自fakeServer.php
的輸出將最終存儲在$response
變量中。
如果一切運行不正常,我們可以更好地控制測試環境以發現問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.