百度翻译API请求
练习前可查看百度文档: http://developer.baidu.com/wiki/index.php?title=帮助文档首页/百度翻译/翻译API在使用前,你需要在开发者帐号中创建应用,来获取授权码,这样才能正常的使用提供的接口。活动:[html] viewplaincopyprint?
·
练习前可查看百度文档: http://developer.baidu.com/wiki/index.php?title=帮助文档首页/百度翻译/翻译API
在使用前,你需要在开发者帐号中创建应用,来获取授权码,这样才能正常的使用提供的接口。
活动:
- 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;
- }
- }
- }
布局:
- <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.我这里使用了自动识别,所以可以中英文互译。其规则:
- 自动识别的规则
- 当源语言为非中文时,目标语言自动设置为中文。当源语言为中文时,目标语言自动设置为英文。
- 如下例:
- 1)源语言识别为中文,则翻译方向为“中 -> 英”
- 2)源语言识别为英文,则翻译方向为“英 -> 中”
- 3)源语言识别为日文,则翻译方向为“日 -> 中”
2.用get请求发送中文的时候,需要转码,开始的时候以为百度提供的接口,就没考虑那么多,其实是需要你处理的。
3.翻译其他语种需求 , 参考如下语种编码:
源码下载 : http://download.csdn.net/detail/qq_25835645/9117263
更多推荐
已为社区贡献1条内容
所有评论(0)