0

curlを使用して非ラテン文字のURLにアクセスしようとしていますが、アクセスすると応答がありません。私のブラウザはそれらを訪問するのに問題はありません、私は文字列変換をチェックしました、そして私は「http://www.linkedin.com/pub/j-rgen-a-tr-ff/7/606/68a」を訪問しているようです私のブラウザは「http://se.linkedin.com/pub/j%C3%B6rgen-a-tr%C3%A4ff/7/606/68a」にアクセスします。カールが成功するようにその文字列を変換するにはどうすればよいですか?

function hitFormGet($loginURL, $loginFields, $referer,$cookieString)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

    //curl_setopt($ch,    CURLOPT_AUTOREFERER,         true);
    curl_setopt($ch,    CURLOPT_COOKIESESSION,         true);
    //curl_setopt( $ch, CURLOPT_COOKIE,$cookieString);
    curl_setopt($ch,    CURLOPT_FAILONERROR,         false);
    curl_setopt($ch,    CURLOPT_FOLLOWLOCATION,        false);
    curl_setopt($ch, CURLOPT_VERBOSE, 1 );
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate,sdch');
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch,    CURLOPT_FRESH_CONNECT,         true);
    curl_setopt($ch,    CURLOPT_HEADER,             false);
    //curl_setopt($ch,    CURLOPT_POST,                 true);
    curl_setopt($ch,    CURLOPT_RETURNTRANSFER,        true);
    curl_setopt($ch,    CURLOPT_CONNECTTIMEOUT,     30);
    curl_setopt($ch,    CURLOPT_USERAGENT, "Googlebot/2.1 (+http://www.googlebot.com/bot.html)");

    curl_setopt($ch, CURLOPT_URL, $loginURL.$loginFields);

    curl_setopt($ch, CURLOPT_REFERER, $referer);

    //curl_setopt($ch, CURLOPT_POSTFIELDS, $loginFields);
    $ret = curl_exec($ch);
    curl_close($ch);
    return $ret;
}


$res=hitFormGet("http://se.linkedin.com/pub/j%C3%B6rgen-a-tr%C3%A4ff/7/606/68a","","","");
4

1 に答える 1

2

スウェーデンからLinkedInにアクセスしているようです。そのため、se.linkedin.comにリダイレクトされます。期待どおりにURLを変換するには、j-rgen-a-tr-ff / 7/606 / 68aの例のように、動的URL部分にurlencode()を適用できます。

動作するはずです。

于 2012-04-26T08:33:14.750 に答える