百度翻译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>
运行效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/fe0f8ee7f3b480a3188cd72edf595a00)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/33766b858b1fec9d91b4904690af89b1)
说明:
1.我这里使用了自动识别,所以可以中英文互译。其规则:
[html] view
plaincopyprint?
自动识别的规则
当源语言为非中文时,目标语言自动设置为中文。当源语言为中文时,目标语言自动设置为英文。
如下例:
1)源语言识别为中文,则翻译方向为“中 -> 英”
2)源语言识别为英文,则翻译方向为“英 -> 中”
3)源语言识别为日文,则翻译方向为“日 -> 中”
2.用get请求发送中文的时候,需要转码,开始的时候以为百度提供的接口,就没考虑那么多,其实是需要你处理的。
3.翻译其他语种需求 , 参考如下语种编码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/2438ad65896c3b0e34bb0d3684ecd969)
源码下载 : http://download.csdn.net/detail/qq_25835645/9117263
在使用前,你需要在开发者帐号中创建应用,来获取授权码,这样才能正常的使用提供的接口。
活动:
[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
相关文章推荐
- OpenCV for Ios 学习笔记(9)-用OPENGL渲染AR场景2
- css3新属性placeholder兼容ie7/ie8
- 面试题总结-new 和malloc 区别
- 线程与进程
- activity 中的相关配置小结
- 解决rabbitmq 不能启动的问题
- 实现1.add(1).add(2).add(3)……的级联叠加
- X264 利用MinGW 在windows 下的编译
- struts2请求的URL的搜索路径的顺序概述
- shell中if做比较
- 数字如何转换成ASCII码字符――谭浩强C课后题4.9
- iOS学习内容总结
- C++中string的用法 string字符串的使用方法
- Contains Duplicate II
- Random产生随机数问题
- org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML doc
- 迷宫最短路径问题
- Test:开通博客
- 结对博客(Java通信项目QQ)
- 阅读 LdrInitializeThunk