使用步驟見百度翻譯API。該網站也可下載demo代碼,可是可能存在一些錯誤,需修改。java
修改後的代碼見附件或Eclipse源碼。json
須要開發者帳號、密碼。只要審覈經過便可。api
注意:每個月翻譯字符數低於200萬,享免費服務。超出則收取相應費用。微信
1 import java.io.UnsupportedEncodingException; 2 import com.baidu.translate.demo.TransApi; 3 public class Main { 4 // 在平臺申請的APP_ID 詳見 http://api.fanyi.baidu.com/api/trans/product/desktop?req=developer 5 private static final String APP_ID = "20170709000063735"; 6 private static final String SECURITY_KEY = "EiXpUVJAu4mLYinEqgzN"; 7 public static void main(String[] args) throws UnsupportedEncodingException { 8 TransApi api = new TransApi(APP_ID, SECURITY_KEY); 9 String query = "中國"; 10 System.out.println(api.getTransResult(query, "auto", "en")); 11 } 12 }
主類如上,副類代碼通常不修改,直接調用便可。網站
運行結果(json格式):編碼
{"from":"zh","to":"en","trans_result":[{"src":"\u4e2d\u56fd","dst":"Chinese"}]}spa
從中提取出咱們真正須要的字符串。翻譯
JDK1.6以上版本自帶的類能夠實現調用JS的功能,能夠實現執行字符串中的運算公式的功能。code
1 public class runString { 2 static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript"); 3 public static void main(String[] args) { 4 String strs = "1+1*2+(10-(2*(5-3)*(2-1))-4)+10/(5-0)"; 5 try { 6 System.out.println(jse.eval(strs)); 7 } catch (Exception t) { 8 } 9 } 10 }
須要注意:字符串中的括號必須是英文括號,不然會出錯。xml
1 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 2 3 req.setCharacterEncoding("UTF-8");//轉換編碼方式 4 resp.setCharacterEncoding("UTF-8"); 5 PrintWriter out = resp.getWriter();//經過PrintWriter返回消息至微信後臺 6 7 //接收消息 8 try { 9 Map<String,String> map = MessageUtil.xmlToMap(req); 10 String fromUserName = map.get("FromUserName");//發送方賬號(一個OpenID) 11 String toUserName = map.get("ToUserName");//開發者微信號 12 String msgType = map.get("MsgType");//text//若是是文本消息的話,MsgType="text" 13 String content = map.get("Content");//文本消息內容 14 15 String message = null; 16 //判斷是否爲文本消息 17 if("text".equals(msgType)) { 18 //若是是前綴是回覆,則返回使用者的話 19 if(content.startsWith("回覆:")) { 20 com.po.TextMessage text = new com.po.TextMessage(); 21 text.setFromUserName(toUserName);//注意,這裏發送者與接收者調換了 22 text.setToUserName(fromUserName); 23 text.setMsgType("text");//文本類型 24 text.setCreateTime("" + new Date().getTime());//當前時間 25 text.setContent("您發送的消息是:" + content.substring(3));//返回消息。注:從第一個分號開始截取 26 //將文本消息轉換爲xml 27 message = MessageUtil.textMessageToXml(text); 28 29 System.out.println(message); 30 } 31 //若是前綴是翻譯,則返回使用者翻譯後的話 32 if(content.startsWith("翻譯:")) { 33 //1.先翻譯 34 final String APP_ID = "20170709000063735";//帳號 35 final String SECURITY_KEY = "EiXpUVJAu4mLYinEqgzN";//密碼 36 com.baidu.translate.TransApi api = new com.baidu.translate.TransApi(APP_ID, SECURITY_KEY); 37 String content_result = api.getTransResult(content.substring(3), "auto", "en"); 38 //2.處理翻譯的結果 39 //如:{"from":"zh","to":"en","trans_result":[{"src":"\u4e2d\u56fd","dst":"Chinese"}]} 40 char [] content_result_temp = content_result.toCharArray(); 41 content_result = "";//清空數據 42 for(int i = content_result_temp.length-5;;i--) { 43 if(content_result_temp[i] == '"') { 44 break; 45 } 46 content_result = content_result_temp[i] + content_result; 47 } 48 //3.再寫入 49 com.po.TextMessage text = new com.po.TextMessage(); 50 text.setFromUserName(toUserName);//注意,這裏發送者與接收者調換了 51 text.setToUserName(fromUserName); 52 text.setMsgType("text");//文本類型 53 text.setCreateTime("" + new Date().getTime());//當前時間 54 text.setContent(content_result);//返回消息 55 //將文本消息轉換爲xml 56 message = MessageUtil.textMessageToXml(text); 57 58 System.out.println(message); 59 } 60 //若是是前綴是計算,則返回使用者的計算結果 61 if(content.startsWith("計算:")) { 62 //1.先計算 63 ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript"); 64 String content_result = content.substring(3); 65 content_result = "" + jse.eval(content_result); 66 //2.再寫入 67 com.po.TextMessage text = new com.po.TextMessage(); 68 text.setFromUserName(toUserName);//注意,這裏發送者與接收者調換了 69 text.setToUserName(fromUserName); 70 text.setMsgType("text");//文本類型 71 text.setCreateTime("" + new Date().getTime());//當前時間 72 text.setContent(content.substring(3) + "=" + content_result);//返回消息。注:從第一個分號開始截取 73 //將文本消息轉換爲xml 74 message = MessageUtil.textMessageToXml(text); 75 76 System.out.println(message); 77 } 78 } 79 80 out.print(message);//返回消息 81 } catch (DocumentException | ScriptException e) { 82 e.printStackTrace(); 83 } finally { 84 out.close(); 85 } 86 }