使用google translate api POST方法,返回404
本文关键字:返回 方法 POST google translate api 使用 | 更新日期: 2023-09-27 18:06:17
基本上我有一些法语文本,我想用c#把它转换成英语。
我使用谷歌翻译api,这是工作很好,直到我有一个文本。长度> 1000 ....然后我意识到我必须使用POST方法。
由于我使用post方法,它返回404。
顺便说一句,我知道api被弃用了,我认为它会很酷,但我开始意识到也许我应该使用bing ?
string fromLanguage = "fr";
string toLanguage = "en";
String apiKey = "AIzasdfasdfJvWKNioZwLg-3kyYsm4_dao";
String apiUrl = "https://www.googleapis.com/language/translate/v2";
string tmpTranslatedContent = Translate(apiUrl, "salut la planete", apiKey, fromLanguage, toLanguage);
public string Translate(string url, string text, string key, string fromLanguage, string toLanguage)
{
PostSubmitter post = new PostSubmitter();
post.Url = url;
post.PostItems.Add("key", key);
post.PostItems.Add("source", fromLanguage);
post.PostItems.Add("target", toLanguage);
post.PostItems.Add("q", text);
post.Type = PostSubmitter.PostTypeEnum.Post;
string result = post.Post();
return result;
}
PostSubmitter是我在搜索google
时发现的一个类网站上的评论说它可以工作.....
类的主要部分看起来像这样
HttpWebRequest request=null;
if (m_type==PostTypeEnum.Post)
{
Uri uri = new Uri(url);
request = (HttpWebRequest) WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postData.Length;
using(Stream writeStream = request.GetRequestStream())
{
UTF8Encoding encoding = new UTF8Encoding();
byte[] bytes = encoding.GetBytes(postData);
writeStream.Write(bytes, 0, bytes.Length);
}
谢谢。
这是一个有点旧,但我刚刚遇到了一个类似的问题,但与PHP而不是c#和修复应该非常相似。
基本上,即使你在使用POST,你仍然需要告诉Google,从REST的角度来看,你实际上是在做GET。这可以通过X-HTTP-Method-Override头来完成,将其设置为:X-HTTP-Method-Override: GET
Google告诉我作为ASP。. NET MVC,版本2,有一个HttpHelper方法。HttpMethodOverride将允许你这样做。
根据Google Translate API,即使在发布时,文本仍然限制在5k以内。