import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import net.arnx.jsonic.JSON; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; public class MSTranslatorTest { public static void main(String[] args) { try { MSTranslatorTest app = new MSTranslatorTest(); app.translate(); } catch(Throwable ex) { ex.printStackTrace(System.err); } } private void translate() throws IOException { DefaultHttpClient client = new DefaultHttpClient(); // Step1 access_tokenを取得 // 取得のためのリクエストを準備 HttpPost httpPost = new HttpPost("https://datamarket.accesscontrol.windows.net/v2/OAuth2-13"); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("grant_type", "client_credentials")); // クライアント IDを設定 params.add(new BasicNameValuePair("client_id", "....")); // 顧客の秘密を設定 params.add(new BasicNameValuePair("client_secret", "....")); params.add(new BasicNameValuePair("scope", "http://api.microsofttranslator.com")); httpPost.setEntity(new UrlEncodedFormEntity(params)); // 取得実行 String accessToken; HttpResponse response1 = client.execute(httpPost); try { // 結果はJSONとして返ってくるのでJSONICでaccess_tokenを切り出す HttpEntity entity = response1.getEntity(); String reponseText = EntityUtils.toString(entity); Map json = JSON.decode(reponseText, Map.class); accessToken = (String)json.get("access_token"); } finally { httpPost.releaseConnection(); } // Step2 翻訳する // 翻訳リクエストURLを作成 // ・翻訳元=日本語 (from=ja) // ・翻訳先=スペイン語 (to=es) // ・翻訳する文字列 (text) String text = "こんにちは"; String uri = String.format("http://api.microsofttranslator.com/V2/Http.svc/Translate?from=ja&to=es&text=%s", text); // access_tokenをヘッダに付与。"Bearer "を前につける。 String authorization = String.format("Bearer %s", accessToken); HttpGet httpGet = new HttpGet(uri); httpGet.setHeader("Authorization", authorization); // 翻訳実行 HttpResponse response2 = client.execute(httpGet); try { // 結果はXMLで返ってくる。そのままコンソールに表示。 HttpEntity entity = response2.getEntity(); String reponseText = EntityUtils.toString(entity); System.out.println(reponseText); } finally { httpGet.releaseConnection(); } } }
実行するとコンソールに次のような結果が表示される。
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">¡Buenas noches!</string>
関連記事
0 件のコメント:
コメントを投稿