asp.NetGoogleのtranslateツール翻訳API

2579 ワード

この記事では、C#を利用して小さなプログラムを書きます.
考え方はこうです.
1:POST送信(またはGET)
2:POST(またはGET)の応答を取得する
3:私たちが望む値に正則的に一致します.
POST(またはGET)が発生する関数:
 
  
public static string GetGetRequest(string urlP,string encode){
if(null==urlP) return null;
string StrRetP = null;
Stream dataStream = null;
try{
HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(urlP);
myHttpWebRequest.Timeout = 10000; // 10 secs
HttpWebResponse Objresponse =(HttpWebResponse)myHttpWebRequest.GetResponse();
//Encoding enc = Encoding.GetEncoding(1252); // Windows default Code Page
if(Objresponse.StatusDescription == "OK"){//HttpStatusCode.OK
dataStream = Objresponse.GetResponseStream ();
Encoding objE = String.IsNullOrEmpty(encode)?Encoding.GetEncoding(0):Encoding.GetEncoding(encode);
StreamReader r = new StreamReader(dataStream,objE);
StrRetP= r.ReadToEnd();
}
}catch(Exception e){
StrRetP =e.Message;
}finally{
if(null!=dataStream) dataStream.Close();
}
return StrRetP;
}

これは前のいくつかの文章で紹介しました.
次に、正則的に一致する関数:
 
  
public static string GetMatchString(string text,string pattern,int point){
if(String.IsNullOrEmpty(text)||String.IsNullOrEmpty(pattern))return String.Empty;
Regex rx = new Regex(pattern,RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);
Match match = rx.Match(text);
string word="";
if (match.Success) word = match.Groups[point].Value;
return word.Trim();
}

この数は正規表現数に基づいて、一致する値を返します.
Main本体に直接アクセス:
 
  
public static void Main(string[] args){
string mess =" ";
Console.WriteLine(HttpUtility.UrlEncode(" "));
mess = GetGetRequest("http://translate.google.com/translate_t?langpair="+HttpUtility.UrlEncode("zh-CN|en")+ "&text="+HttpUtility.UrlEncode(mess,System.Text.UnicodeEncoding.GetEncoding( "Gb2312")),"utf-8");
//Console.WriteLine(mess);
mess = GetMatchString(mess,@"(
)([?:\s\S]*?)(
)",2);
Console.WriteLine(mess);
}

気になるのは
HttpUtility.UrlEncode(mess,System.Text.UnicodeEncoding.GetEncoding( "Gb2312"))
この文では、UrlEncodeの文字コードを認識できません.ここで示す必要があります.
OK、それからcscして、コンパイルして、ダウンロードしましょう.