PHPでYQLを使用して、file_get_contentsを使用してクエリを送信しています。用語抽出にYQLを使用しているため、クエリに大量のテキストが含まれています。残念ながら、これはURLを長くしすぎてエラーを返します。はるかに少ない量のテキストを使用すれば正常に動作します。PHP/YQL/GET:URLが長すぎます
私はGETを使用してYQLでSELECT文を使用する唯一の方法はありますか?また、より少ない量のテキストを使用する以外にどのようなオプションがありますか?
PHPでYQLを使用して、file_get_contentsを使用してクエリを送信しています。用語抽出にYQLを使用しているため、クエリに大量のテキストが含まれています。残念ながら、これはURLを長くしすぎてエラーを返します。はるかに少ない量のテキストを使用すれば正常に動作します。PHP/YQL/GET:URLが長すぎます
私はGETを使用してYQLでSELECT文を使用する唯一の方法はありますか?また、より少ない量のテキストを使用する以外にどのようなオプションがありますか?
私がGETでYQLのSELECTステートメントを使用することができる唯一の方法である、と私は、テキストの少ない量を使用した以外の他のどのような選択肢がありますか?
GETの代わりにPOSTリクエストを使用することができます。以下は、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 [email protected] and [email protected]'
))
)));
$json = file_get_contents('http://query.yahooapis.com/v1/public/yql', false, $ctx);
get変数を使用してクエリを実行する代わりにCURLを使用するのはなぜですか?
$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);
カールをポストで試してみますか?ストリームとfile_get_contents? – ajreal
代わりにPOSTリクエストを試しましたか? – Thai