Je souhaite créer une application simple qui détecte la langue (à l'aide de l'API Google) et l'envoie au moteur de recherche correspondant. Par exemple, si la requête de recherche est en russe, je dois la rediriger vers Yandex.ru dans tous les autres cas vers Google.Redirection spécifique à une langue
Voilà comment je fais:
def get(self):
decoded = unicode(unquote(self.request.query), "windows-1251")
text = decoded.encode("utf-8")
url = "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q="+ quote(text)
try:
data = json.loads(urllib2.urlopen(url).read())
redirectUrl = "http://www.google.com/search?q=" + text
if data["responseData"]["language"] == 'ru':
redirectUrl = "http://yandex.ru/yandsearch?text=" + text
self.redirect(redirectUrl)
except urllib2.HTTPError, e:
self.response.out.write("HTTP error: %d" % e.code)
except urllib2.URLError, e:
self.response.out.write("Network error: %s" % e.reason.args[1])
Quand je demande cette URL « http://findinrightplace.appspot.com/q?test requête » redirige vers Google, mais la redirection vers yandex ne fonctionne pas (http://findinrightplace.appspot.com/q?тестовый запрос).
Qu'est-ce que je fais mal?
Vous pouvez essayer d'utiliser des outils tels que Firebug ou la console développeur de Chrome pour voir si le serveur renvoie l'en-tête HTTP de redirection. Si c'est le cas, il s'agit de savoir pourquoi le navigateur ignore l'en-tête. –
Il renvoie le code d'état 302. Je crois que quelque chose ne va pas avec l'encodage. –