2015-07-03 5 views
4

Я пытаюсь использовать бесплатный API Google Translate, который извлекается из дополнения Firefox Firefox S3, т. Е.400 плохой запрос в google translate free api с помощью curl

https://translate.google.com/translate_a/single?client=t&sl=auto& 
tl=en&hl=en&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t 
&dt=at&ie=UTF-8&oe=UTF-8&otf=2&srcrom=1&ssel=0&tsel=0&q=Hello 

в PHP cURL т.е.

$isPOST=isset($_POST) && !empty($_POST); 
$q=$isPOST ? $_POST['q'] : $_GET['q']; 

$url='https://translate.google.com/translate_a/single'; 
$data='client=t&sl=auto&tl=en&hl=en&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&ie=UTF-8&oe=UTF-8&otf=2&srcrom=1&ssel=0&tsel=0&q='.$q; 
$ch=curl_init(); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_NOBODY, 0); 
curl_setopt($ch, CURLOPT_URL, !$isPOST ? $url.'?'.$data : $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_REFERER, $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
if($isPOST){ 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
} 
$return=curl_exec($ch); 
curl_close($ch); 

Я называю эту страницу с помощью Ajax ..

$.ajax({ 
    type: text.length>750 ? 'post' : 'get', 
    url: 'translate.php', 
    data: 'q='+text, 
    success: function(d){ alert(d); } 
}); 

но делать все это, я получаю этот ответ от Google Translate, то есть.

Error: 400. That’s an error. 
Your client has issued a malformed or illegal request. That’s all we know. 

Пожалуйста, помогите мне решить эту ошибку и получите переведенный текст ..

ответ

1

К сожалению, я попытался POST с таким же кодом и он работал .. Спасибо всем.

+0

Приятно слышать, Счастливое кодирование – Thamaraiselvam

1

Я проверил ваш URL в вашем браузере он показывает 400 Error. это означает незаконный запрос. попробуйте http://www.sitepoint.com/using-google-translate-api-php/ этот URL.

<?php 
    $apiKey = '<paste your API key here>'; 
    $text = 'Hello world!'; 
    $url = 'https://www.googleapis.com/language/translate/v2?key=' . $apiKey . '&q=' . rawurlencode($text) . '&source=en&target=fr'; 

    $handle = curl_init($url); 
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 
    $response = curl_exec($handle);     
    $responseDecoded = json_decode($response, true); 
    curl_close($handle); 

    echo 'Source: ' . $text . '<br>'; 
    echo 'Translation: ' . $responseDecoded['data']['translations'][0]['translatedText']; 
?> 
+0

, но если вы видите S3 Google Translator Firefox, то он использует тот же url для перевода текста ... –

+0

также, если вы попытаетесь открыть URL-адрес, т.е. https://translate.google.com/translate_a/single?client=t&sl=auto&tl=en&hl=en&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&ie=UTF-8&oe=UTF- 8 & otf = 2 & srcrom = 1 & ssel = 0 & tsel = 0 & q = Привет, тогда он даст перевод в txt-файле, поэтому его работа ... –

 Смежные вопросы

  • Нет связанных вопросов^_^