您的位置:首页 > 其它

百度翻译API请求

2015-09-18 13:52 344 查看
练习前可查看百度文档: http://developer.baidu.com/wiki/index.php?title=帮助文档首页/百度翻译/翻译API

在使用前,你需要在开发者帐号中创建应用,来获取授权码,这样才能正常的使用提供的接口。

活动:

[html] view
plaincopyprint?

public class TranslateAcy extends Activity implements OnClickListener {  

    private String BaiduTrans = "http://openapi.baidu.com/public/2.0/bmt/translate";  

    private String Client_id = "S7874h7McC7avmbWtPFkCOgc";  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_main);  

        initView();  

    }  

  

    public void initView() {  

        findViewById(R.id.btn_trans).setOnClickListener(this);  

    }  

  

    private Handler insHandler = new Handler() {  

        @Override  

        public void handleMessage(Message msg) {  

            // TODO Auto-generated method stub  

            switch (msg.what) {  

            case 0:  

                String word = msg.getData().getString("word");  

                ((EditText) findViewById(R.id.et_second)).setText(word);  

                break;  

  

            default:  

                break;  

            }  

        }  

    };  

  

    /**  

     * 翻译  

     */  

    private void transEnTo() {  

        // path: http://fanyi.baidu.com/#en/zh/  

        String putword = ((EditText) findViewById(R.id.et_first)).getText()  

                .toString();  

        try {  

            // 对中文字符进行编码,否则传递乱码  

            putword = URLEncoder.encode(putword, "utf-8");  

            URL url = new URL(BaiduTrans + "?client_id=" + Client_id + "&q="  

                    + putword + "&from=auto&to=zh");  

  

            URLConnection con = url.openConnection();  

            con.connect();  

            InputStreamReader reader = new InputStreamReader(  

                    con.getInputStream());  

            BufferedReader bufread = new BufferedReader(reader);  

            StringBuffer buff = new StringBuffer();  

            String line;  

            while ((line = bufread.readLine()) != null) {  

                buff.append(line);  

            }  

            // 对字符进行解码  

            String back = new String(buff.toString().getBytes("ISO-8859-1"),  

                    "UTF-8");  

            String str = JsonToString(back);  

            Message msg = new Message();  

            msg.what = 0;  

            Bundle bun = new Bundle();  

            bun.putString("word", str);  

            msg.setData(bun);  

            insHandler.sendMessage(msg);  

  

            reader.close();  

            bufread.close();  

        } catch (Exception e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        }  

    }  

  

    /**  

     * 获取jsoon中翻译的内容  

     *   

     * @param jstring  

     * @return  

     */  

    private String JsonToString(String jstring) {  

        try {  

            JSONObject obj = new JSONObject(jstring);  

            JSONArray array = obj.getJSONArray("trans_result");  

            obj = array.getJSONObject(0);  

            String word = obj.getString("dst");  

            return word;  

        } catch (JSONException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        }  

        return "";  

    }  

  

    /**  

     * 访问网络线程  

     */  

    private void tranThread() {  

        new Thread() {  

            public void run() {  

                transEnTo();  

            };  

        }.start();  

    }  

  

    @Override  

    public void onClick(View v) {  

        // TODO Auto-generated method stub  

        switch (v.getId()) {  

        case R.id.btn_trans:  

            tranThread();  

            break;  

  

        default:  

            break;  

        }  

    }  

}  

布局:

[html] view
plaincopyprint?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

    xmlns:tools="http://schemas.android.com/tools"  

    android:layout_width="match_parent"  

    android:layout_height="match_parent"  

    android:orientation="vertical" >  

  

    <EditText  

        android:id="@+id/et_first"  

        android:layout_width="match_parent"  

        android:layout_height="wrap_content"  

        android:ems="10" >  

  

        <requestFocus />  

    </EditText>  

  

    <Button  

        android:id="@+id/btn_trans"  

        android:layout_width="wrap_content"  

        android:layout_height="wrap_content"  

        android:text="翻译" />  

  

    <EditText  

        android:id="@+id/et_second"  

        android:layout_width="match_parent"  

        android:layout_height="wrap_content"  

        android:ems="10" />  

  

</LinearLayout>  

运行效果:





说明:

       1.我这里使用了自动识别,所以可以中英文互译。其规则:

[html] view
plaincopyprint?

自动识别的规则  

    当源语言为非中文时,目标语言自动设置为中文。当源语言为中文时,目标语言自动设置为英文。  

    如下例:   

    1)源语言识别为中文,则翻译方向为“中 -> 英”   

    2)源语言识别为英文,则翻译方向为“英 -> 中”   

    3)源语言识别为日文,则翻译方向为“日 -> 中”   

        2.用get请求发送中文的时候,需要转码,开始的时候以为百度提供的接口,就没考虑那么多,其实是需要你处理的。

3.翻译其他语种需求 , 参考如下语种编码:



源码下载 : http://download.csdn.net/detail/qq_25835645/9117263
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: