我在PHP中使用YQL和file_get_contents来发送查询。我正在使用YQL进行术语提取,因此我的查询包含大量文本。不幸的是,这会使URL过长并返回错误。如果我使用更少量的文本,它工作正常。
我是唯一可以在YQL上使用SELECT语句和GET的方法,除了使用少量文本外还有哪些其他选项?
答案 0 :(得分:1)
我是唯一可以在YQL上使用SELECT语句和GET的方法,除了使用少量文本外还有哪些其他选项?
正如其他人所说,您可以使用POST请求而不是GET。下面是使用file_get_contents()
和流上下文的示例。 cURL或任何其他可以发出POST请求的远程内容获取代码也可以正常工作。
$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 :(得分:0)
为什么不使用CURL而不是使用get变量查询?
$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);