$url3 = "http://cocatalog.loc.gov/cgi-bin/Pwebrecon.cgi?DB=local&PAGE=First";
$ch3 = curl_init(); //2nd curl to search ASIN
curl_setopt($ch3, CURLOPT_URL,$url3);
curl_setopt($ch3, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch3, CURLOPT_TIMEOUT, 15);
curl_setopt($ch3, 156, 2500);
curl_setopt($ch3, CURLOPT_GETFIELDS,"?Search_Arg=$Kindletitle&Search_Code=TALL&CNT=25&HIST=1");
curl_setopt($ch3, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch3, CURLOPT_FOLLOWLOCATION, true);
$copyrightrecordresponse = curl_exec($ch3);
curl_close($ch3);
尝试对以下搜索表单执行GET请求但我收到错误 curl_setopt()期望参数2为long,给定字符串,
答案 0 :(得分:0)
也许我错过了一些东西,但为什么不事先形成请求网址?不完全确定你想要完成什么,但看看这是否适合你:
$title='teste';
$url3="http://cocatalog.loc.gov/cgi-bin/Pwebrecon.cgi?Search_Arg=$title&Search_Code=TALL&CNT=25&HIST=1";
$ch3 = curl_init(); //2nd curl to search ASIN
curl_setopt($ch3, CURLOPT_URL,$url3);
curl_setopt($ch3, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch3, CURLOPT_TIMEOUT, 15);
curl_setopt($ch3, 156, 2500);
curl_setopt($ch3,CURLOPT_HTTPGET,true);
curl_setopt($ch3, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch3, CURLOPT_FOLLOWLOCATION, true);
$copy= curl_exec($ch3);
curl_close($ch3);
echo($copy);
这将返回存储在$ title变量中的字符串的搜索结果。
请参阅有关curl选项的文档中的参考链接:
http://pt1.php.net/manual/en/function.curl-setopt.php
希望它有所帮助。 : - )
答案 1 :(得分:0)
<强>第一即可。 cURL 中没有CURLOPT_GETFIELDS。
<强>第二即可。 $ Kindletitle可能包含URL分隔符。所以,避免这样的事情:
"?Search_Arg=$Kindletitle&Search_Code=TALL&CNT=25&HIST=1"
使用urlencode()。
但是我使用了数组()和http_build_query():
$data = array(
'Search_Arg' => $Kindletitle,
'Search_Code' => 'TALL',
'CNT' => 25,
'HIST' => '1'
);
$query = http_build_query($data);
GET
使用:
$url = 'http://example.com?'.$query;
curl_setopt($ch3, CURLOPT_URL, $url);
或使用POST
:
curl_setopt($ch3, CURLOPT_POST, true );
curl_setopt($ch3, CURLOPT_POSTFIELDS, $query );
关于curl_setopt($ch3, 156, 2500);
和156
的注意事项
对于Windows平台,CURLOPT_CONNECTTIMEOUT_MS
等于它。出于某种原因,在某些版本的PHP中,CURLOPT_CONNECTTIMEOUT_MS
定义不正确。可能不是您的情况,请使用CURLOPT_CONNECTTIMEOUT_MS
代替156
。