簡體   English   中英

PHP Curl-400錯誤的請求

[英]PHP Curl - 400 Bad Request

我知道在使用Curl時這是一個常見問題,但是在通過StackOverflow和Google查看后,我還沒有找到解決方案。

我嘗試了不同的用戶代理,但遇到了不同的錯誤:

  • 請求的URL返回錯誤:類型為(未知)的400 Bad Requestresource(19)
  • 請求的URL返回錯誤:類型為(未知)的400 Bad Requeststring(42)(我注意到42指向$ target_url中的'=')

取決於我對下面的代碼所做的一些修改,但是沒有人指出我要解決此問題的方向。

我感謝任何建議:

$target_url = "http://www.hockeydb.com/ihdb/stats/pdisplay.php?pid=170307";

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)');
    curl_setopt($ch, CURLOPT_URL,$target_url);
    curl_setopt($ch, CURLOPT_FAILONERROR, true);
    //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $html = curl_exec($ch);
    if ($html === false) $html = curl_error($ch);
    echo stripslashes($html);
    curl_close($ch);

    var_dump($ch);

***我應該注意,我實際上是從文件中讀取URL(以及其他一些URL),所以URL的格式可能有問題嗎? 我以前做過,但沒有問題,但是現在我很困惑。 我讀取了每行/ URL,並將其放入一個數組中,稍后再遍歷。

***如果我對URL進行硬編碼,則它可以正常工作,但是由於某種原因從文件中讀取它會產生錯誤。

不要使用stripslashes()使用preg_replace()來過濾URL

<?php
$target_url="http://www.hockeydb.com/ihdb/stats/pdisplay.php?pid=170307";
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,4); 
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);

$html = curl_exec($ch);

$html = preg_replace("#(<\s*a\s+[^>]*href\s*=\s*[\"'])(?!http)([^\"'>]+)  ([\"'>]+)#",'$1'.$target_url.'$2$3', $html);
echo $html;

curl_close($ch);
var_dump($ch);
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM