簡體   English   中英

PHP Curl發布請求不起作用沒有發布

[英]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.

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