所以基本上我有一些法语文本,想用英语用c#来表达它。
我正在使用谷歌翻译api,这是正常工作,直到我有一个text.length> 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;
}
我在搜索谷歌时找到了
网站上的评论说它有效.....
该课程的主要部分如下所示
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);
}
感谢。
答案 0 :(得分:2)
这有点旧,但我遇到了类似的问题,但使用PHP代替C#,修复应该非常相似。
基本上,即使您使用的是POST,您仍然需要告诉Google,从REST的角度来看,您实际上正在进行GET。这可以使用X-HTTP-Method-Override标头完成,将其设置为:X-HTTP-Method-Override:GET
Google告诉我,作为ASP.NET MVC版本2,有一个方法HttpHelper.HttpMethodOverride可以让你这样做。
根据谷歌翻译API,即使发帖,文字仍然限制在5k。