PHP / YQL / GET: URL слишком длинный - PullRequest
2 голосов
/ 10 января 2011

Я использую YQL в PHP с file_get_contents для отправки запроса.Я использую YQL для извлечения терминов, поэтому мой запрос содержит большое количество текста.К сожалению, это делает URL слишком длинным и возвращает ошибку.Это работает хорошо, если я использую намного меньшее количество текста.

Является ли единственным способом, которым я могу использовать инструкцию SELECT на YQL с GET, и какие другие опции у меня есть, кроме использования меньшего количества текста?

Ответы [ 2 ]

1 голос
/ 26 января 2011

Это единственный способ, которым я могу использовать оператор SELECT на YQL с 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);
0 голосов
/ 24 января 2011

Почему бы вам не использовать 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);
...