php
  • curl
  • box-api
  • 2013-05-09 150 views 2 likes 
    2

    我在嘗試將以下cURL命令轉換爲PHP。將cURL命令轉換爲PHP

    curl -k https://api.box.com/2.0/files/content -H "Authorization: Bearer 8tuuIMsrf3ShyODVdw" -F [email protected] -F folder_id=0

    這裏是我的嘗試:

    $url = 'https://api.box.com/2.0/folders/content'; 
    $params['filename'] = '@txt.txt'; 
    $params['folder_id'] = '0'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer ".$this->access_token, "Content-Type: multipart/form")); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    

    它不但是工作。任何人都可以幫助我理解爲什麼我在做什麼是錯的,我能做些什麼來修改我的代碼?謝謝!!

    回答

    2

    嘗試從CURLOPT_HTTPHEADER選項中刪除標題"Content-Type: multipart/form",因爲cURL會根據您的發佈數據爲您處理此問題。

    由於您正在上傳文件,因此內容類型將自動設置爲multipart/form-data,這實際上是正確的內容類型,而不是multipart/form

    +0

    我試過這樣做,但我仍然遇到問題。我不確定的一件事是如何將-F cURL命令轉換爲PHP。從cURL文檔中,-F'可以讓curl模擬一個用戶按下提交按鈕的填充表單。這會導致根據RFC 2388'使用Content-Type multipart/form-data捲曲POST數據。我真的不知道如何解釋這一點,所以我只是嘗試在我的POST請求中將它們用作params(key,value)。它是否正確? – user2066880 2013-05-09 21:32:25

    +0

    -F等同於您的$ params數組和CURLOPT_POSTFIELDS選項。什麼是'$數據'?錯誤消息還是空的? – drew010 2013-05-09 21:46:25

    +0

    $數據爲空。當我跟蹤網絡活動時,它表示POST請求發送時沒有錯誤,但沒有任何反應 – user2066880 2013-05-09 23:46:48

    2

    curl -k表示不安全。添加以下行:

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
    

    從德語手冊翻譯(需要注意的是英文版本缺少此信息):

    如果CURLOPT_SSL_VERIFYPEER已被停用,該選項CURLOPT_SSL_VERIFYHOST已被停用。

    其餘的代碼應該可以正常工作。

    +0

    好趕上,但我試圖實現這一點,我的代碼仍然無法正常工作。我想我已經寫過的代碼有一個基本問題,要麼用我設置頭文件的方式,要麼將cURL -F命令翻譯成PHP。有關更多詳細信息,請參閱我對其他答案的評論。 – user2066880 2013-05-09 21:35:28

    相關問題