2014-04-24 21 views
2

試圖發送郵政請求api,得到一個圖像回來。php + curl發送郵件請求與字段

例如網址:

https://providers.cloudsoftphone.com/lib/prettyqr/createQR.php?user=1003123&format=png&cloudid=asdasdasd&pass=123123123 

上述網址正常工作在瀏覽器中,
的API不關心,如果請求是GET/POST,我的代碼

結果總是「無效輸入'

代碼:

$url='https://providers.cloudsoftphone.com/lib/prettyqr/createQR.php'; 
$u = rand(); 
$p = rand(); 

$fields = array(
    'user'=> urlencode($u), 
    'pass'=> urlencode($p), 
    'format'=> urlencode('jpg'), 
    'cloudid' => urlencode('test') 
); 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

$output = curl_exec($ch); 

curl_close($ch); 

echo $output; 
在一個側面說明

:有沒有辦法來調試才能看到正在發送的請求?

+1

您提供的URL採用GET格式,因此如果您直接在瀏覽器中粘貼該URL,則只會發出GET請求。但在你的代碼中,你似乎已經使用了'POST'。 –

+0

是的,我已經提到它清楚地表明API在發佈請求時會返回圖像。測試與hurl.it –

+0

好吧,但我嘗試使用'高級休息客戶端'它不'與'POST'請求​​工作。只有'GET'請求它的工作。 –

回答

1

提供的URL不適用於POST請求。下面是導致屏幕截圖(我嘗試使用Advance Rest Client

enter image description here

但是它與GET方法完美的工作。所以你可以繼續使用GET請求方法來生成QR碼。

我同意GET與POST方法相比並不是很安全,但在你的情況下,當從curl請求的用戶不會了解這些URL參數(用戶標識,密碼)。 由於curl請求將從您的Web服務器發送,而不是從客戶端/用戶的瀏覽器發送。

稍後,您可以輸出從api獲得的響應圖像。