2018-04-08

第一次寫簡書文章漠魏,不足之處下方評(píng)論處請(qǐng)?zhí)岢觯x謝

百度翻譯開放平臺(tái)

點(diǎn)擊鏈接他去,右上角登錄/注冊(cè)毙驯,認(rèn)證為個(gè)人開發(fā)者,選擇通用翻譯灾测,然后

立即使用

點(diǎn)擊立即使用爆价,然后

點(diǎn)擊文檔與支持,左側(cè)通用翻譯API技術(shù)文檔,查看接口信息

請(qǐng)求字段

網(wǎng)絡(luò)請(qǐng)求返回的字段

例子:

將apple從英文翻譯成中文:

請(qǐng)求參數(shù):

q=apple

from=en

to=zh

appid=2015063000000001(在管理控制臺(tái)左面的開發(fā)者信息里查看)

salt=1435660288(任意值)

平臺(tái)分配的密鑰: 12345678?(在管理控制臺(tái)左面的開發(fā)者信息里查看)

生成sign:

拼接字符串1拼接:

appid+q+sal+密鑰=2015063000000001apple143566028812345678

計(jì)算簽名sign(對(duì)字符串1做md5加密媳搪,注意計(jì)算md5之前铭段,串1必須為UTF-8編碼)sign=md5(2015063000000001apple143566028812345678)sign

? ? ? ?=f89f9594663708c1605f3d736d01d2d4

完整請(qǐng)求為:http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4

也可以使用POST方法傳送需要的參數(shù)。

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 "";

}

語言列表和錯(cuò)誤碼列表我就不貼了秦爆,有興趣自己看看

下面開始在Android Studio上寫代碼

1.添加依賴

as自帶的okhttp版本有點(diǎn)老序愚,所以自己導(dǎo)入下好的okhttp包,還有okio包等限,一起使用爸吮,我們這里使用的是Gson解析json,所以添加Gson依賴

拷貝到libs文件夾下精刷,右鍵選擇as a library

注意依賴是否缺少

2.AndroidManifest.xml添加網(wǎng)絡(luò)權(quán)限

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怒允;//用來顯示查詢結(jié)果

String json; //返回的json串

private static final String url = "http://api.fanyi.baidu.com/api/trans/vip/translate"; ?//網(wǎng)絡(luò)請(qǐng)求的url

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

private static final String SALT_STRING = "1435660288"; ?//隨機(jī)數(shù)可以隨便設(shè)置

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

private String SIGN_STRING;//簽名埂软,md5加密

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

//創(chuàng)建okhttp對(duì)象,設(shè)置超時(shí)

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);//把字符串轉(zhuǎn)為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();

//創(chuàng)建Request對(duì)象

Request request = new Request

? ? ? ? ? ? ? ? ? ? ? ? .Builder()

? ? ? ? ? ? ? ? ? ? ? ? .post(body) //post請(qǐng)求

? ? ? ? ? ? ? ? ? ? ? ? .url(url)

? ? ? ? ? ? ? ? ? ? ? ? ?.build();

//創(chuàng)建call對(duì)象,開始異步網(wǎng)絡(luò)請(qǐng)求

Call call = mOkHttpClient.newCall(request);

call.enqueue(new Callback() {

@Override

public void onFailure(Call call, IOException e) {

Toast.makeText(MainActivity.this, "請(qǐng)求失敗", Toast.LENGTH_LONG).show();

}

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

//返回的結(jié)果為json

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

//開線程

new Thread() {

@Override

public void run() {

super.run();

//創(chuàng)建javabean對(duì)象實(shí)例

Translate mTranslate = new Translate();

//創(chuàng)建gson對(duì)象實(shí)例

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 "";

}

}

結(jié)果

第一次寫簡書勘畔,排版什么的很難受所灸,多體諒一下,謝謝

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炫七,一起剝皮案震驚了整個(gè)濱河市爬立,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌万哪,老刑警劉巖侠驯,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奕巍,居然都是意外死亡吟策,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門的止,熙熙樓的掌柜王于貴愁眉苦臉地迎上來檩坚,“玉大人,你說我怎么就攤上這事诅福∝椅” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵氓润,是天一觀的道長赂乐。 經(jīng)常有香客問我,道長旺芽,這世上最難降的妖魔是什么沪猴? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任辐啄,我火速辦了婚禮采章,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘壶辜。我一直安慰自己悯舟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布砸民。 她就那樣靜靜地躺著抵怎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪岭参。 梳的紋絲不亂的頭發(fā)上反惕,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音演侯,去河邊找鬼姿染。 笑死,一個(gè)胖子當(dāng)著我的面吹牛秒际,可吹牛的內(nèi)容都是我干的悬赏。 我是一名探鬼主播狡汉,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼闽颇!你這毒婦竟也來了盾戴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤兵多,失蹤者是張志新(化名)和其女友劉穎尖啡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剩膘,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡可婶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了援雇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矛渴。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惫搏,靈堂內(nèi)的尸體忽然破棺而出具温,到底是詐尸還是另有隱情,我是刑警寧澤筐赔,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布铣猩,位于F島的核電站,受9級(jí)特大地震影響茴丰,放射性物質(zhì)發(fā)生泄漏达皿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一贿肩、第九天 我趴在偏房一處隱蔽的房頂上張望峦椰。 院中可真熱鬧,春花似錦汰规、人聲如沸汤功。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滔金。三九已至,卻和暖如春茂嗓,著一層夾襖步出監(jiān)牢的瞬間餐茵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工述吸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忿族,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像肠阱,于是被迫代替她去往敵國和親票唆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容