PHP-CURL在POST請求時的注意事項


今天搞12306搶票, 在用CURL模擬POST請求校驗驗證碼時, 無論如何12306都返回零, 正常應該返回True或者False, 最后查找原因如下

  只是請求頭 Content-Type 用了 application/x-www-form-urlencoded, 但是驗證碼值(類似坐標"xxx,yyy")沒有用urlencode轉碼

 

注意事項:

  1.CURL的POST請求方式, 默認為multipart/form-data

  2.如果POST請求中有文件, 則Content-Type應該設置為multipart/form-data, 可以不對請求數據進行urlencode(可以使用http_build_query函數快速創建)

  3.如果POST請求中無文件, 則Content-Type應該設置為application/x-www-form-urlencoded, 如果有特殊字符, 由於有部分瀏覽器不兼容, 所以需要對請求數據進行urlencode(可以使用http_build_query函數快速創建)

  即在沒有需要上傳文件的情況下, 盡量對 POST 提交的數據進行 http_build_query 處理, 然后再發送出去, 能實現更好的兼容性, 更小的請求數據包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM