首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/YQL/GET: URL太长

PHP/YQL/GET: URL太长
EN

Stack Overflow用户
提问于 2011-01-10 15:24:10
回答 2查看 909关注 0票数 2

我在PHP中通过file_get_contents使用YQL来发送查询。我使用YQL进行术语提取,所以我的查询包含大量文本。不幸的是,这会使URL过长并返回一个错误。如果我使用的文本数量要少得多,它工作得很好。

是我在YQL上使用SELECT语句和GET的唯一方式吗?除了使用更少的文本之外,我还有什么其他选择?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-26 05:00:32

是我在带有GET的YQL上使用SELECT语句的唯一方法,除了使用更少的文本之外,我还有什么其他选择?

正如其他人所说,您可以使用POST请求而不是GET请求。下面是一个在流上下文中使用file_get_contents()的示例。可以发出POST请求的cURL或任何其他远程内容获取代码也可以很好地工作。

代码语言:javascript
复制
$ctx = stream_context_create(array('http' => array(
    'method'  => 'POST',
    'header'  => 'Content-Type: application/x-www-form-urlencoded',
    'content' => http_build_query(array(
        'context' => $my_really_really_huge_context,
        'query'   => $query,
        'format'  => 'json',
        'q'       => 'SELECT * FROM search.termextract WHERE context=@context and query=@query'
    ))
)));

$json = file_get_contents('http://query.yahooapis.com/v1/public/yql', false, $ctx);
票数 1
EN

Stack Overflow用户

发布于 2011-01-24 22:36:32

为什么不使用CURL而使用get变量进行查询呢?

代码语言:javascript
复制
$c = curl_init("http:/query.yahooapis.com/v1/public/yql?q=myverylongquery&format=json");
curl_setopt($c, CURLOPT_RETURNTRANSFERT, 1); // returns the data into the variable
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 20); // query times out after 20 seconds

$data = json_decode(curl_exec($c)); // I asked for data format to be in json in the query
curl_close($c);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4644553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档