2017-02-21 86 views
1

它沒有發送帖子請求。我不知道爲什麼,或者我做錯了什麼。PHP Curl post 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。

+0

Vaxified L,爲了幫助那些會回答你問題的人,請添加一些細節。你怎麼知道curl_exec()函數沒有向API發送數據?你有來自服務器的日誌嗎?您提供的所有關於您認爲代碼是否工作的信息將有助於我們理解您嘗試過的以及您尚未嘗試的內容。 –

+0

我沒有自己的API,但我已經在requestmaker.com上測試了這個請求,並且它工作正常。但是,當我去發送請求在我的服務器上沒有任何反應。 –

+0

所以你說這個請求應該做出一個在目標站點上可見的改變,並且當你通過另一種方法查看那個站點時,你沒有看到你期望的改變。它是否正確? –

回答

1

你沒有真正做一個POST請求,你會想,以發送POST請求添加

curl_setopt($ch, CURLOPT_POST, true); 

有關更多信息,請參閱curl documentation,特別是curl_setopt documentation

+0

仍然沒有工作:/ –

+0

什麼都沒有工作?請指定此更改後的結果。 – nvisser

+0

沒有真正改變。我沒有/擁有api,所以我沒有這個日誌。我在發送請求的服務器上沒有收到任何確定的錯誤。請求發送時根本沒有任何反應。 –

1

除了@ nvisser的建議,你還應該捕獲和審查curl請求的響應。更改curl_exec如下:

$response = curl_exec($ch); 

因爲你已經設置CURLOPT_RETURNTRANSFER爲TRUE,你curl_exec封裝了所有的響應作爲字符串並將其返回到您所選擇的變量。

輸出響應,您可能會發現更多信息來幫助您診斷問題。

討論後添加在評論

這是我們應該做的:

既然你沒有通過網絡控制,嘗試安裝和激活Web服務器的虛擬專用服務器上,以便您可以接收和http://localhost/fakeServer.php

一旦你已經安裝的Apache2或NGINX處理請求,並對其進行設置,創建了一個小程序,在該網站的根目錄下名爲fakeServer.php,和API URL設置爲http://localhost/fakeServer.php。在該腳本中,每次運行腳本時都要創建一個輸出$_POST標題內容的日誌。

通過這種方式,您可以證明腳本是否發送請求,以及它們對接收服務器的樣子。這將幫助您調試您的腳本以使用API​​類並驗證您的代碼格式良好且正常運行。

是否有fakeServer.php輸出響應並在程序中檢查該響應。如果一切運行良好,fakeServer.php的輸出將以$response變量結束。

如果一切工作不正常,我們對測試環境有更多的控制權來發現問題。

+0

沒有迴應。 –

+0

根本沒有任何反應表明你的互聯網數據包永遠不會傳送到遠程服務器。如果您正在另一臺服務器上測試您的代碼,並且您的代碼已由該服務器驗證,那麼您必須分解不同的事情。我們可以假設你的PHP是正確的,因爲你在requestmaker.com上驗證了它。然後考慮一下你的服務器和它所在的網絡。有防火牆可以阻止您的出站請求嗎?如果是這種情況,那麼你的請求將永遠不會發揮出來,直到你找到一種通過防火牆的方式。 –

+0

試着想想你的互聯網數據包將從創建到銷燬的完整路徑,並考慮如何與在requestmaker.com創建的互聯網數據包不同。 –