卷曲问题检索传回GET参数

时间:2013-08-01 08:04:02

标签: php curl libcurl

我正在使用OAuth API。最初,我收到$token后正在进行标题重定向,而不是汇总传回给我的所有GET参数。我正在尝试实现curl,所以我不必来回重定向。我的问题是,我不知道如何在发出curl请求后检索返回的GET参数。这是我的代码

        $qry_str = "?oauth_token=" . $token;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, GSAPI_AUTHORIZE_ENDPOINT . $qry_str);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, '3');
        $content = trim(curl_exec($ch));

我意识到我不需要$content。我需要的是GET参数,当我想象在发起curl_exec时发生这些参数。我该如何检索这些?

    -

1 个答案:

答案 0 :(得分:2)

您需要做的是获取curl请求以返回标头作为返回字符串的一部分。然后,您需要为“Location:”标记解析它们,并使用PHP中的一些内置解析函数来获取所需的数据。试试下面的内容。

$qry_str = "?oauth_token=" . $token;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, GSAPI_AUTHORIZE_ENDPOINT . $qry_str);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, '3');
$content = trim(curl_exec($ch));

if(!$content) echo 'Curl error: ' . curl_error($ch);

preg_match('/Location\:\s(.*)\s/',$content,$matches);
$urlParts = parse_url(trim($matches[1]));
parse_str($urlParts['query'],$queryArray);

$ queryArray变量现在应该包含标题“Location:”字段中URL的所有查询字符串参数。

编辑:

如果你在http://www.someurl.com/oauth.php点击一个脚本然后它会重新发送到http://www.someotherurl.com/somescript.php?param1=x&param2=y,这将有效。

$ queryArray的结果将是数组(“param1”=> 1,“param2”=> 2),虽然我可能完全误解了你的问题......