2017-02-13 216 views
0

也許這個問題得到回答之前,但我測試的一切是我一個網絡上找到,並不能使它工作... 我必須成立這種用PHP請求。PHP捲曲和API

  • 捲曲X POST 「https://page.com/login/CODE」 \
  • H 「接受:應用/ JSON,文本/ *; Q = 0.2」 \
  • H 「AcceptCharset:UTF8」 \
  • H「AcceptEncoding: gzip的,放氣」 \
  • d '{ 「appCode」: 「CODE」}' \
  • --cacert cacert.pem \
  • --compressed

這裏是我的PHP代碼:

$data = array('appCode'=>'CODE'); 
$data_json = json_encode($data); 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_CAINFO, "cacert.pem"); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($curl, CURLOPT_URL, URL_REQUEST); 
curl_setopt($curl, CURLOPT_HEADER, FALSE); 
curl_setopt($curl,CURLOPT_ENCODING , ""); 
    //curl_setopt($ch, CURLOPT_POST, 1); 
    //curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_json); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

如果我得到一個正確的答案,從API它應該是一個JSON陣列,ALSE按摩登錄錯誤。

還是不知道這是什麼文字/ *; Q = 0.2" ,有什麼建議我在做什麼錯

如果有人將這裏需要幫助我的代碼:

$data = array('appCode'=>'CODE'); 
$data_json = json_encode($data); 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($curl, CURLOPT_CAINFO, "cacert.pem"); 
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://login.com/CODE", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "POST", 
    CURLOPT_POSTFIELDS => $data_json, 
    CURLOPT_HTTPHEADER => array('cache-control: no-cache'), 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 
    echo $response; 
} 

最終我發現什麼是錯的。

我得到了所有的手冊在PDF文件。 我從PDF複製標題信息,並將其粘貼到 Sublime 當我複製並這樣 的Content-Type糊劑頭部信息:應用/ JSON

在昇華將其用破折號正常顯示( - ),但是當我與像記事本等軟件打開++它顯示了不帶短跑。 的ContentType:應用程序/ JSON

這是問題,爲什麼我的代碼沒有工作:)

+0

text/*; q = 0.2「被稱爲媒體類型品質因子,用於指定文件的優先級,在這種情況下,純文本在0到1的範圍內具有0.2的優先級 –

+0

它可能是其不工作的原因? – ekavet

+0

沒有,你是不是設置在捲曲 –

回答

0

我知道這種捲曲「翻譯」的好方法
您可以下載郵遞員here並執行您的請求像往常一樣
更多關於郵差here
當您完成您的請求建築時,您可以轉到代碼(右上角,保存下方) - >並選擇您喜歡的語言。在你的情況下PHP Curl。之後,您可以將該代碼複製到curl請求。
它看起來就像這樣:curl example from Postman

編輯: cUrl 這是怎麼會看,如果你選擇在「代碼」捲曲選項等。

+0

問題是我得從我的服務器做,因爲到API訪問只能從服務器的IP來完成。 – ekavet

+0

你也可以找到在郵差代碼捲曲選項。 – Grynets

+0

我已經添加編輯,所以你可以看到它的樣子。 – Grynets

0

這個選項應該是未加註釋,如果你需要一個POST請求

curl_setopt($ch, CURLOPT_POST, 1); 
+0

沒有沒有這一條:)我已經嘗試它,評論它。那不是的情況下所需的所有選項。CURLOPT_POSTFIELDS本應發送POST頭了。 .. – ekavet