2013-05-06 96 views
0
$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长,串给出卷曲GET请求的搜索表单

+0

为什么你使用这个** curl_setopt($ CH 3,156,2500); **在你的代码。我认为这是给错误 – 2013-05-06 08:04:15

+0

@DarkWish CURLOPT_CONNECTTIMEOUT_MS有156 – 2013-05-06 09:45:41

+0

然后使用这些** CURLOPT_TIMEOUT_MS应该是155 **和** CURLOPT_CONNECTTIMEOUT_MS应该是156 ** [见这里](http://www.php.net/manual /en/function.curl-setopt.php#107314) – 2013-05-06 09:50:37

回答

0

也许我我错过了一些东西,但为什么不事先形成请求URL?不清楚自己所要完成的,但看看这对你的作品是什么:

$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变量字符串搜索结果。

请参阅从文档此引用链接约卷曲选项:

http://pt1.php.net/manual/en/function.curl-setopt.php

希望它帮助。 :-)

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
这等于为CURLOPT_CONNECTTIMEOUT_MS用于Windows平台。出于某种原因,CURLOPT_CONNECTTIMEOUT_MS在某些版本的PHP中定义不正确。也许不是你的情况下,使用CURLOPT_CONNECTTIMEOUT_MS代替156予以明确。