php curl returns 400 错误请求
php curl returns 400 Bad Request
伙计们。
我写了一个脚本来使用代理从一些 link 中获取内容。
如果您知道原因并有建议,请帮助我。
谢谢
当我运行下面的代码时,它显示 400 错误代码。
$linkCheck = "https://www.uwgc.org/give/donor-networks/step-up-program/2016/03/14/oh-the-places-she's-going";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $linkCheck);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, $workingProxy['port']);
curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_PROXY, $workingProxy['ip']);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $workingProxy['username'].':'.$workingProxy['password']);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error_report= curl_getinfo($ch);
curl_close($ch);
if($httpcode != 200){
echo '<pre>' . $httpcode .'</pre>' ;
return null;
}else{
return $data;
}
预期行为:
获取给定 link 的正确内容。
@大家。
感谢您的提示。
最后,我的代码几乎可以在以下配置下运行。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$linkCheck);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,$fetchTimeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $fetchTimeout);
顺便说一句,我还有一个问题。
当 url 包含重音符号 (/clasificación) 等奇数字符时,它不会出现致命错误。
当我使用 /clasificaci%C3%B3n 而不是上面的方式时,它又可以工作了。
所以,这是我的问题。
如何更改奇数字符串,使其有效 url.
非常感谢。
使用 Curl 比其他方式面临更多挑战。只需使用 php shell_exec 函数
$cmd = "curl -k -v -X POST 'https://serveraddress:8243/?foo=bar' -H 'Authorization: Basic cEZ.....h'";
$result = shell_exec($cmd);
$output = json_decode($result,true);
print_r($output);
伙计们。
我写了一个脚本来使用代理从一些 link 中获取内容。 如果您知道原因并有建议,请帮助我。 谢谢
当我运行下面的代码时,它显示 400 错误代码。
$linkCheck = "https://www.uwgc.org/give/donor-networks/step-up-program/2016/03/14/oh-the-places-she's-going";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $linkCheck);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, $workingProxy['port']);
curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_PROXY, $workingProxy['ip']);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $workingProxy['username'].':'.$workingProxy['password']);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error_report= curl_getinfo($ch);
curl_close($ch);
if($httpcode != 200){
echo '<pre>' . $httpcode .'</pre>' ;
return null;
}else{
return $data;
}
预期行为:
获取给定 link 的正确内容。
@大家。 感谢您的提示。
最后,我的代码几乎可以在以下配置下运行。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$linkCheck);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,$fetchTimeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $fetchTimeout);
顺便说一句,我还有一个问题。 当 url 包含重音符号 (/clasificación) 等奇数字符时,它不会出现致命错误。
当我使用 /clasificaci%C3%B3n 而不是上面的方式时,它又可以工作了。 所以,这是我的问题。 如何更改奇数字符串,使其有效 url.
非常感谢。
使用 Curl 比其他方式面临更多挑战。只需使用 php shell_exec 函数
$cmd = "curl -k -v -X POST 'https://serveraddress:8243/?foo=bar' -H 'Authorization: Basic cEZ.....h'";
$result = shell_exec($cmd);
$output = json_decode($result,true);
print_r($output);