2018-04-08

第一次写简书文章,不足之处下方评论处请提出,谢谢

百度翻译开放平台

点击链接,右上角登录/注册,认证为个人开发者,选择通用翻译,然后

立即使用

点击立即使用,然后

点击文档与支持,左侧通用翻译API技术文档,查看接口信息

请求字段

网络请求返回的字段

例子:

将apple从英文翻译成中文:

请求参数:

q=apple

from=en

to=zh

appid=2015063000000001(在管理控制台左面的开发者信息里查看)

salt=1435660288(任意值)

平台分配的密钥: 12345678 (在管理控制台左面的开发者信息里查看)

生成sign:

拼接字符串1拼接:

appid+q+sal+密钥=2015063000000001apple143566028812345678

计算签名sign(对字符串1做md5加密,注意计算md5之前,串1必须为UTF-8编码)sign=md5(2015063000000001apple143566028812345678)sign

       =f89f9594663708c1605f3d736d01d2d4

完整请求为:http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4

也可以使用POST方法传送需要的参数。

MD5加密方法

private static String md5(String string) {

if (TextUtils.isEmpty(string))

           return "";

MessageDigest md5 = null;

try {

             md5 = MessageDigest.getInstance("MD5");

             byte[] bytes = md5.digest(string.getBytes());

             String result = "";

             for (byte b : bytes) {

                      String temp = Integer.toHexString(b & 0xff);

                       if (temp.length() == 1) {

                             temp = "0" + temp;

}

            result += temp;

}

       return result;

} catch (Exception e) {

      e.printStackTrace();

}

     return "";

}

语言列表和错误码列表我就不贴了,有兴趣自己看看

下面开始在Android Studio上写代码

1.添加依赖

as自带的okhttp版本有点老,所以自己导入下好的okhttp包,还有okio包,一起使用,我们这里使用的是Gson解析json,所以添加Gson依赖

拷贝到libs文件夹下,右键选择as a library

注意依赖是否缺少

2.AndroidManifest.xml添加网络权限

3.代码

javabean类:Translate.class使用GsonFormat生成

public class Translate {

/**

* from : en

* to : zh

* trans_result : [{"src":"apple","dst":"苹果"}]

*/

private String from;

private String to;

/**

* src : apple

* dst : 苹果

*/

private List trans_result;

public void setFrom(String from) {

this.from = from;

}

public void setTo(String to){

this.to = to;

}

public void setTrans_result(List trans_result) {

this.trans_result = trans_result;

}

public String getFrom() {

return from;

} public String getTo() {

return to;

}

public List getTrans_result() {

return trans_result;

}

public static class TransResultEntity {

private String src;

private String dst;

public void setSrc(String src) {

this.src = src;

}

public void setDst(String dst) {

this.dst = dst;

}

public String getSrc() {

return src;

}

public String getDst() {

return dst;

}

}

}

布局activity_main.xml

textview,editview,button

MainActivity.class

public class MainActivity extends AppCompatActivity {

private EditText mEditText; //输入框

private TextView mTextView;//用来显示查询结果

String json; //返回的json串

private static final String url = "http://api.fanyi.baidu.com/api/trans/vip/translate";  //网络请求的url

private static final String APP_ID_STRING = "20180407000143709";  //自己的appid

private static final String SALT_STRING = "1435660288";  //随机数可以随便设置

private static final String SECRET_STRING = "LXCjF_t1j9qOgwgzu95B"; //自己的密钥

private String SIGN_STRING;//签名,md5加密

private String string;//拼接需要md5加密的字符串

//创建okhttp对象,设置超时

private OkHttpClient mOkHttpClient = new OkHttpClient

                                                                                    .Builder()

                                                                                   .connectTimeout(5000, TimeUnit.SECONDS)

                                                                                   .build();

//handle来通知主线程处理UI更新

private Handler mHandler = new Handler() {

      @Override

   public void handleMessage(Message msg) {

         super.handleMessage(msg);

         mTextView.setText(msg.getData().getString("translate"));

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mEditText = (EditText) findViewById(R.id.editText_translate);

mTextView = (TextView) findViewById(R.id.textView_show); findViewById(R.id.button_translate).setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View v) {

      Request_Get();

}

});

}

private void Request_Get() {

//拼接需要md5加密的字符串

string = APP_ID_STRING + mEditText.getText().toString()+SALT_STRING+SECRET_STRING;

SIGN_STRING = md5(string);//把字符串转为md5

//用formbody来添加字段

FormBody body = new FormBody

                      .Builder()

                     .add("from", "en")

                     .add("to", "zh")

                     .add("q", mEditText.getText().toString())

                     .add("appid", APP_ID_STRING)

                    .add("salt", SALT_STRING)

                    .add("sign", SIGN_STRING)

                    .build();

//创建Request对象

Request request = new Request

                        .Builder()

                        .post(body) //post请求

                        .url(url)

                         .build();

//创建call对象,开始异步网络请求

Call call = mOkHttpClient.newCall(request);

call.enqueue(new Callback() {

@Override

public void onFailure(Call call, IOException e) {

Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_LONG).show();

}

@Override public void onResponse(Call call, Response response) throws IOException {

//返回的结果为json

json = response.body().string();

//开线程

new Thread() {

@Override

public void run() {

super.run();

//创建javabean对象实例

Translate mTranslate = new Translate();

//创建gson对象实例

Gson gson = new Gson();

//开始解析json

mTranslate = gson.fromJson(json, Translate.class);

//使用message和bundle来传递信息

Message msg = Message.obtain();

Bundle b = new Bundle();

b.putString("translate", mTranslate.getTrans_result().get(0).getDst() + "");

msg.setData(b);

//交给handler处理

mHandler.sendMessage(msg);

}

}.start();

}

});

}

private static String md5(String string) {

if (TextUtils.isEmpty(string))

return "";

MessageDigest md5 = null;

try {

md5 = MessageDigest.getInstance("MD5");

byte[] bytes = md5.digest(string.getBytes());

String result = "";

for (byte b : bytes) {

String temp = Integer.toHexString(b & 0xff);

if (temp.length() == 1) {

temp = "0" + temp;

}

result += temp;

} return result;

} catch (Exception e) {

e.printStackTrace();

} return "";

}

}

结果

第一次写简书,排版什么的很难受,多体谅一下,谢谢

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容

  • 2018年Android 面试题 IT开发仔2018-03-21 15:26:46 在这“金三银四”的季节,我准备...
    王培921223阅读 2,516评论 3 24
  • 最近一直听刚好遇见你这首歌,感觉自己又回到了那个青春涌动的年代。想想过去,总会有一种莫名的感动,泪水会不经意间流出...
    天津秋风若雨轩阅读 219评论 0 1
  • 1、“V”型反抽 沪指早盘放量下探3190点后,很快开始了缓慢爬升地逼空式上涨行情,中间丝毫没有回头的意味,...
    阿凯古阅读 127评论 0 1
  • 今天吃过午饭后,我开车回老家去看妈妈。几天都没打电话了,昨天打电话,发现妈妈的手机关机了。她是24小时 不会关机,...
    傲雪_352a阅读 124评论 3 2