diff --git a/.gitignore b/.gitignore deleted file mode 100644 index ee31d72..0000000 --- a/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -/.idea diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF deleted file mode 100644 index 838f8da..0000000 --- a/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Main-Class: win.i02.util.Test - diff --git a/README.md b/README.md index 46dd0e0..1292879 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# i02Translate -idea 翻译插件 +# idea 翻译插件 +热键alt+d 翻译选中文字 diff --git a/i02Translate.properties b/i02Translate.properties deleted file mode 100644 index 679bde9..0000000 --- a/i02Translate.properties +++ /dev/null @@ -1,4 +0,0 @@ -path.variable.kotlin_bundled=C\:\\Program Files\\JetBrains\\IntelliJ IDEA 2017.1.3\\plugins\\Kotlin\\kotlinc -path.variable.maven_repository=C\:\\Users\\Qi\\.m2\\repository -jdk.home.intellij_idea_iu-171.4424.56=C\:/Program Files/JetBrains/IntelliJ IDEA 2017.1.3 -javac2.instrumentation.includeJavaRuntime=false \ No newline at end of file diff --git a/i02Translate.xml b/i02Translate.xml deleted file mode 100644 index 4585637..0000000 --- a/i02Translate.xml +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/module_irskjtranslate.xml b/module_irskjtranslate.xml deleted file mode 100644 index 7396929..0000000 --- a/module_irskjtranslate.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/out/production/IrskjTranslate/META-INF/plugin.xml b/out/production/IrskjTranslate/META-INF/plugin.xml deleted file mode 100644 index ab05e6a..0000000 --- a/out/production/IrskjTranslate/META-INF/plugin.xml +++ /dev/null @@ -1,39 +0,0 @@ - - win.i02.plugin - 谷歌翻译 - 1.0 - 赵宇麒 - - - 主要针对注释翻译,去除注释的*号,和html标签
- 使用google api翻译 - ]]>
- - - most HTML tags may be used - ]]> - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/out/production/i02Translate/META-INF/plugin.xml b/out/production/i02Translate/META-INF/plugin.xml deleted file mode 100644 index e2111d8..0000000 --- a/out/production/i02Translate/META-INF/plugin.xml +++ /dev/null @@ -1,44 +0,0 @@ - - win.i02.plugin - TranslateByGoogle - 1.0 - 赵宇麒 - - https://github.com/PingerOne/A8Translate 的翻译插件
- 主要针对注释翻译,去除注释的*号,和html标签
- 使用google api翻译
- 热键alt+e - 2、字符串Unicode编码,热键shift+q - ]]>
- - - - - - - - - - com.intellij.modules.lang - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml index e2111d8..be90ba4 100644 --- a/resources/META-INF/plugin.xml +++ b/resources/META-INF/plugin.xml @@ -2,19 +2,21 @@ win.i02.plugin TranslateByGoogle 1.0 - 赵宇麒 + 赵宇麒 https://github.com/PingerOne/A8Translate 的翻译插件
主要针对注释翻译,去除注释的*号,和html标签
使用google api翻译
- 热键alt+e - 2、字符串Unicode编码,热键shift+q + 热键alt+d + 2、字符串Unicode编码,alt+w ]]>
- + + @@ -34,11 +36,11 @@ - + - + - \ No newline at end of file + diff --git a/src/win/i02/Demo.java b/src/win/i02/Demo.java index bb53831..a58bbac 100644 --- a/src/win/i02/Demo.java +++ b/src/win/i02/Demo.java @@ -5,4 +5,7 @@ * Created by irskj on 2018/9/27. */ public class Demo { + public static void main(String[] args) { + + } } diff --git a/src/win/i02/TranslateAction.java b/src/win/i02/TranslateAction.java index 177f4f9..1b0b72e 100644 --- a/src/win/i02/TranslateAction.java +++ b/src/win/i02/TranslateAction.java @@ -10,9 +10,8 @@ import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.ui.JBColor; import org.apache.http.util.TextUtils; -import win.i02.bean.TranslationGoogleBean; -import win.i02.util.HttpUtils; -import win.i02.util.TranslateCallBack; +import win.i02.bean.ResultBean; +import win.i02.service.impl.TraslateFactory; import java.awt.*; @@ -57,49 +56,12 @@ private void performTranslation(AnActionEvent e) { return; } - HttpUtils.requestGoogle(selectedText, new TranslateCallBack() { - @Override - public void onSuccess(TranslationGoogleBean result) { - if(TextUtils.isEmpty(result.getCode())){ - showPopupWindow(result.toString()); - }else{ - showPopupWindow(result.getCode()); - } - - } - - @Override - public void onFailure(String message) { - showPopupWindow(message); - } - - @Override - public void onError(String message) { - showPopupWindow(message); - } - }); - - /** - * 第二步 ---> API查询 - */ -// HttpUtils.requestData(selectedText, new TranslateCallBack() { -// -// @Override -// public void onSuccess(TranslationBean result) { -// showPopupWindow(result.toString()); -// } -// -// @Override -// public void onFailure(String message) { -// showPopupWindow(message); -// } -// -// @Override -// public void onError(String message) { -// showPopupWindow(message); -// } -// }); - + ResultBean bean = TraslateFactory.translate(selectedText); + if(bean.isSuccess()){ + showPopupWindow(bean.getResult()); + }else{ + showPopupWindow(bean.getErrorMsg()); + } } diff --git a/src/win/i02/bean/GoogleTranslateBean.java b/src/win/i02/bean/GoogleTranslateBean.java new file mode 100644 index 0000000..5df33f1 --- /dev/null +++ b/src/win/i02/bean/GoogleTranslateBean.java @@ -0,0 +1,55 @@ +/** + * Copyright 2020 bejson.com + */ +package win.i02.bean; +import java.util.List; + +/** + * Auto-generated: 2020-04-14 9:24:28 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class GoogleTranslateBean { + + private List sentences; + private String src; + private int confidence; + private Spell spell; + private Ld_result ld_result; + public void setSentences(List sentences) { + this.sentences = sentences; + } + public List getSentences() { + return sentences; + } + + public void setSrc(String src) { + this.src = src; + } + public String getSrc() { + return src; + } + + public void setConfidence(int confidence) { + this.confidence = confidence; + } + public int getConfidence() { + return confidence; + } + + public void setSpell(Spell spell) { + this.spell = spell; + } + public Spell getSpell() { + return spell; + } + + public void setLd_result(Ld_result ld_result) { + this.ld_result = ld_result; + } + public Ld_result getLd_result() { + return ld_result; + } + +} \ No newline at end of file diff --git a/src/win/i02/bean/Ld_result.java b/src/win/i02/bean/Ld_result.java new file mode 100644 index 0000000..f6e285d --- /dev/null +++ b/src/win/i02/bean/Ld_result.java @@ -0,0 +1,39 @@ +/** + * Copyright 2020 bejson.com + */ +package win.i02.bean; +import java.util.List; + +/** + * Auto-generated: 2020-04-14 9:24:28 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class Ld_result { + + private List srclangs; + private List srclangs_confidences; + private List extended_srclangs; + public void setSrclangs(List srclangs) { + this.srclangs = srclangs; + } + public List getSrclangs() { + return srclangs; + } + + public void setSrclangs_confidences(List srclangs_confidences) { + this.srclangs_confidences = srclangs_confidences; + } + public List getSrclangs_confidences() { + return srclangs_confidences; + } + + public void setExtended_srclangs(List extended_srclangs) { + this.extended_srclangs = extended_srclangs; + } + public List getExtended_srclangs() { + return extended_srclangs; + } + +} \ No newline at end of file diff --git a/src/win/i02/bean/Model_tracking.java b/src/win/i02/bean/Model_tracking.java new file mode 100644 index 0000000..4821a80 --- /dev/null +++ b/src/win/i02/bean/Model_tracking.java @@ -0,0 +1,30 @@ +/** + * Copyright 2020 bejson.com + */ +package win.i02.bean; + +/** + * Auto-generated: 2020-04-14 9:24:28 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class Model_tracking { + + private String checkpoint_md5; + private String launch_doc; + public void setCheckpoint_md5(String checkpoint_md5) { + this.checkpoint_md5 = checkpoint_md5; + } + public String getCheckpoint_md5() { + return checkpoint_md5; + } + + public void setLaunch_doc(String launch_doc) { + this.launch_doc = launch_doc; + } + public String getLaunch_doc() { + return launch_doc; + } + +} \ No newline at end of file diff --git a/src/win/i02/bean/ResultBean.java b/src/win/i02/bean/ResultBean.java new file mode 100644 index 0000000..52871c0 --- /dev/null +++ b/src/win/i02/bean/ResultBean.java @@ -0,0 +1,44 @@ +package win.i02.bean; + +/** + * @author zyq + * @date 2020/4/14 9:15 + */ +public class ResultBean { + /** + * 错误消息 + */ + private String errorMsg; + /** + * 结果 + */ + private String result; + /** + * 状态 + */ + private Boolean success; + + public String getErrorMsg() { + return errorMsg; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } + + public Boolean isSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } +} diff --git a/src/win/i02/bean/Sentences.java b/src/win/i02/bean/Sentences.java new file mode 100644 index 0000000..3e6efa5 --- /dev/null +++ b/src/win/i02/bean/Sentences.java @@ -0,0 +1,47 @@ +/** + * Copyright 2020 bejson.com + */ +package win.i02.bean; +import java.util.List; + +/** + * Auto-generated: 2020-04-14 9:24:28 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class Sentences { + + private String trans; + private String orig; + private int backend; + private List translation_engine_debug_info; + public void setTrans(String trans) { + this.trans = trans; + } + public String getTrans() { + return trans; + } + + public void setOrig(String orig) { + this.orig = orig; + } + public String getOrig() { + return orig; + } + + public void setBackend(int backend) { + this.backend = backend; + } + public int getBackend() { + return backend; + } + + public void setTranslation_engine_debug_info(List translation_engine_debug_info) { + this.translation_engine_debug_info = translation_engine_debug_info; + } + public List getTranslation_engine_debug_info() { + return translation_engine_debug_info; + } + +} \ No newline at end of file diff --git a/src/win/i02/bean/Spell.java b/src/win/i02/bean/Spell.java new file mode 100644 index 0000000..410d0bf --- /dev/null +++ b/src/win/i02/bean/Spell.java @@ -0,0 +1,14 @@ +/** + * Copyright 2020 bejson.com + */ +package win.i02.bean; + +/** + * Auto-generated: 2020-04-14 9:24:28 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class Spell { + +} \ No newline at end of file diff --git a/src/win/i02/bean/TranslationBean.java b/src/win/i02/bean/TranslationBean.java index e1977b6..eab7dcb 100644 --- a/src/win/i02/bean/TranslationBean.java +++ b/src/win/i02/bean/TranslationBean.java @@ -48,7 +48,7 @@ class WebBean { /** * 取错误信息 */ - private String getErrorMessage() { + public String getErrorMessage() { switch (errorCode) { case SUCCESS: return "成功"; @@ -71,7 +71,7 @@ private String getErrorMessage() { /** * 获取不同语言的翻译内容 */ - private String getPhonetic() { + public String getPhonetic() { if (basic == null) { return null; } @@ -100,7 +100,7 @@ private String getPhonetic() { /** * 获取翻译 */ - private String getExplains() { + public String getExplains() { if (basic == null) { return null; } @@ -118,7 +118,7 @@ private String getExplains() { /** * 获取直接的翻译结果 */ - private String getTranslationResult() { + public String getTranslationResult() { if (translation == null) { return null; } @@ -141,7 +141,7 @@ private String getTranslationResult() { /** * 获取网络翻译结果 */ - private String getWebResult() { + public String getWebResult() { if (web == null) { return null; } @@ -170,7 +170,7 @@ private String getWebResult() { return result; } - private boolean isSentence() { + public boolean isSentence() { return query==null||query.trim().contains(" "); } diff --git a/src/win/i02/bean/Translation_engine_debug_info.java b/src/win/i02/bean/Translation_engine_debug_info.java new file mode 100644 index 0000000..9c68f99 --- /dev/null +++ b/src/win/i02/bean/Translation_engine_debug_info.java @@ -0,0 +1,22 @@ +/** + * Copyright 2020 bejson.com + */ +package win.i02.bean; + +/** + * Auto-generated: 2020-04-14 9:24:28 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class Translation_engine_debug_info { + + private Model_tracking model_tracking; + public void setModel_tracking(Model_tracking model_tracking) { + this.model_tracking = model_tracking; + } + public Model_tracking getModel_tracking() { + return model_tracking; + } + +} \ No newline at end of file diff --git a/src/win/i02/service/ITranslateService.java b/src/win/i02/service/ITranslateService.java new file mode 100644 index 0000000..3dd2ed9 --- /dev/null +++ b/src/win/i02/service/ITranslateService.java @@ -0,0 +1,11 @@ +package win.i02.service; + +import win.i02.bean.ResultBean; + +/** + * @author zyq + * @date 2020/4/14 9:28 + */ +public interface ITranslateService { + ResultBean translate(String q); +} diff --git a/src/win/i02/service/impl/BaiduTranslateServiceImpl.java b/src/win/i02/service/impl/BaiduTranslateServiceImpl.java new file mode 100644 index 0000000..46bf1b2 --- /dev/null +++ b/src/win/i02/service/impl/BaiduTranslateServiceImpl.java @@ -0,0 +1,15 @@ +package win.i02.service.impl; + +import win.i02.bean.ResultBean; +import win.i02.service.ITranslateService; + +/** + * @author zyq + * @date 2020/4/14 9:30 + */ +public class BaiduTranslateServiceImpl implements ITranslateService { + @Override + public ResultBean translate(String q) { + return null; + } +} diff --git a/src/win/i02/service/impl/GoogleTranslateServiceImpl.java b/src/win/i02/service/impl/GoogleTranslateServiceImpl.java new file mode 100644 index 0000000..20cb1ea --- /dev/null +++ b/src/win/i02/service/impl/GoogleTranslateServiceImpl.java @@ -0,0 +1,59 @@ +package win.i02.service.impl; + +import com.google.gson.Gson; +import org.apache.commons.collections.CollectionUtils; +import win.i02.bean.GoogleTranslateBean; +import win.i02.bean.ResultBean; +import win.i02.bean.Sentences; +import win.i02.service.ITranslateService; +import win.i02.util.HttpUtils; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; + +/** + * @author zyq + * @date 2020/4/14 9:29 + */ +public class GoogleTranslateServiceImpl implements ITranslateService { + @Override + public ResultBean translate(String q) { + Map params = new HashMap<>(); + params.put("client", "gtx"); + params.put("dt", "t"); + params.put("dj", "1"); + params.put("ie", "UTF-8"); + params.put("sl", "auto"); + params.put("tl", "zh"); + params.put("q", q); + ResultBean resultBean = new ResultBean(); + try { + String result = HttpUtils.requestForHttp("http://translate.google.cn/translate_a/single", params); + if (result != null) { + GoogleTranslateBean bean = new Gson().fromJson(result, GoogleTranslateBean.class); + if(!CollectionUtils.isEmpty(bean.getSentences())){ + bean.getSentences().forEach(new Consumer() { + @Override + public void accept(Sentences sentences) { + resultBean.setResult(resultBean.getResult()!=null?resultBean.getResult()+sentences.getTrans():sentences.getTrans()); + } + }); + resultBean.setSuccess(true); + }else{ + resultBean.setErrorMsg("翻译失败"); + resultBean.setSuccess(false); + } + } else { + resultBean.setErrorMsg("请求失败"); + resultBean.setSuccess(false); + } + } catch (Exception e) { + e.printStackTrace(); + resultBean.setErrorMsg(e.getMessage()); + resultBean.setSuccess(false); + } + + return resultBean; + } +} diff --git a/src/win/i02/service/impl/TraslateFactory.java b/src/win/i02/service/impl/TraslateFactory.java new file mode 100644 index 0000000..b17f041 --- /dev/null +++ b/src/win/i02/service/impl/TraslateFactory.java @@ -0,0 +1,19 @@ +package win.i02.service.impl; + +import win.i02.bean.ResultBean; + +/** + * @author zyq + * @date 2020/4/14 9:33 + */ +public class TraslateFactory { + + public static ResultBean translate(String q) { + ResultBean bean = new GoogleTranslateServiceImpl().translate(q); + if(bean.isSuccess()){ + return bean; + } + bean = new YoudaoTranslateServiceImpl().translate(q); + return bean; + } +} diff --git a/src/win/i02/service/impl/YoudaoTranslateServiceImpl.java b/src/win/i02/service/impl/YoudaoTranslateServiceImpl.java new file mode 100644 index 0000000..93aea77 --- /dev/null +++ b/src/win/i02/service/impl/YoudaoTranslateServiceImpl.java @@ -0,0 +1,102 @@ +package win.i02.service.impl; + +import com.google.gson.Gson; +import win.i02.bean.ResultBean; +import win.i02.bean.TranslationBean; +import win.i02.service.ITranslateService; +import win.i02.util.HttpUtils; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +/** + * @author zyq + * @date 2020/4/14 9:30 + */ +public class YoudaoTranslateServiceImpl implements ITranslateService { + public static final String appKey = "2b80d4bbd8eaa871"; + public static final String appSec = "IPUSCS4lWbvM3nCdcKkXwV3sKBAFDfMU"; + + @Override + public ResultBean translate(String q) { + String salt = String.valueOf(System.currentTimeMillis()); + String from = "EN"; + String to = "zh-CHS"; + String sign = md5(appKey + q + salt + appSec); + Map params = new HashMap(); + params.put("q", q); + params.put("from", from); + params.put("to", to); + params.put("sign", sign); + params.put("salt", salt); + params.put("appKey", appKey); + ResultBean bean = new ResultBean(); + try { + String result = HttpUtils.requestForHttp("http://openapi.youdao.com/api", params); + if (result == null) { + bean.setSuccess(false); + bean.setErrorMsg("请求失败"); + } else { + TranslationBean translationBean = new Gson().fromJson(result, TranslationBean.class); + if(translationBean.errorCode==0){ + bean.setSuccess(true); + bean.setResult(translationBean.getTranslationResult()); + }else{ + bean.setSuccess(false); + bean.setErrorMsg(translationBean.getErrorMessage()); + } + + } + } catch (Exception e) { + bean.setSuccess(false); + bean.setErrorMsg(e.getMessage()); + } + return bean; + } + + + public static String genarator(String q) { + int slat = new Random().nextInt(); + String sign = md5(appKey + q + slat + appSec); + return "&appKey=" + appKey + "&salt=" + slat + "&sign=" + sign + "&q"; + } + + /** + * 生成32位MD5摘要 + * + * @param string + * @return + */ + public static String md5(String string) { + if (string == null) { + return null; + } + char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F'}; + + try { + byte[] btInput = string.getBytes("utf-8"); + /** 获得MD5摘要算法的 MessageDigest 对象 */ + MessageDigest mdInst = MessageDigest.getInstance("MD5"); + /** 使用指定的字节更新摘要 */ + mdInst.update(btInput); + /** 获得密文 */ + byte[] md = mdInst.digest(); + /** 把密文转换成十六进制的字符串形式 */ + int j = md.length; + char str[] = new char[j * 2]; + int k = 0; + for (byte byte0 : md) { + str[k++] = hexDigits[byte0 >>> 4 & 0xf]; + str[k++] = hexDigits[byte0 & 0xf]; + } + return new String(str); + } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { + return null; + } + } +} diff --git a/src/win/i02/util/HttpUtils.java b/src/win/i02/util/HttpUtils.java index 6d24a52..c9425c0 100644 --- a/src/win/i02/util/HttpUtils.java +++ b/src/win/i02/util/HttpUtils.java @@ -1,6 +1,5 @@ package win.i02.util; -import com.google.gson.Gson; import org.apache.http.HttpEntity; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; @@ -9,175 +8,17 @@ import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; -import win.i02.bean.TranslationBean; -import win.i02.bean.TranslationGoogleBean; import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.net.HttpURLConnection; -import java.net.URL; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.*; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; /** * Created by irskj on 2017/11/20. */ public class HttpUtils { - // private static final String BASE_URL = "http://fanyi.youdao.com/openapi.do?keyfrom=Skykai521&key=977124034&type=data&doctype=json&version=1.1&q="; - public static final String appKey = "2b80d4bbd8eaa871"; - public static final String appSec = "IPUSCS4lWbvM3nCdcKkXwV3sKBAFDfMU"; - private static final String BASE_URL = "http://openapi.youdao.com/api?from=EN&to=zh-CHS"; - -// private static final String BASE_GOOGLE_URL="https://translate.google.com/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&source=btn&ssel=3&tsel=0&kc=0&tk=955354.586851&q="; - - -// public static void requestNetDataGoogle(String q,TranslateCallBack callBack){ -// try { -// URL url = new URL(BASE_URL + q); -// HttpURLConnection conn = (HttpURLConnection) url.openConnection(); -// -// conn.setConnectTimeout(5000); -// conn.setReadTimeout(5000); -// conn.setRequestMethod(conn.getRequestMethod()); -// -// // 连接成功 -// if (conn.getResponseCode() == 200) { -// InputStream ins = conn.getInputStream(); -// -// // 获取到Json字符串 -// String content = StreamUtils.getStringFromStream(ins); -// if (content != null) { -// callBack.onSuccess(new Gson().fromJson(content, callBack.mType)); -// } else { -// callBack.onFailure(TranslationBean.EMPTY); -// } -// } else { -// callBack.onFailure(conn.getResponseMessage()); -// } -// } catch (java.io.IOException e) { -// e.printStackTrace(); -// callBack.onFailure(e.getMessage()); -// } -// } - - public static String genarator(String q) { - int slat = new Random().nextInt(); - String sign = md5(appKey + q + slat + appSec); - return "&appKey=" + appKey + "&salt=" + slat + "&sign=" + sign + "&q"; - } - - /** - * 生成32位MD5摘要 - * - * @param string - * @return - */ - public static String md5(String string) { - if (string == null) { - return null; - } - char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - 'A', 'B', 'C', 'D', 'E', 'F'}; - - try { - byte[] btInput = string.getBytes("utf-8"); - /** 获得MD5摘要算法的 MessageDigest 对象 */ - MessageDigest mdInst = MessageDigest.getInstance("MD5"); - /** 使用指定的字节更新摘要 */ - mdInst.update(btInput); - /** 获得密文 */ - byte[] md = mdInst.digest(); - /** 把密文转换成十六进制的字符串形式 */ - int j = md.length; - char str[] = new char[j * 2]; - int k = 0; - for (byte byte0 : md) { - str[k++] = hexDigits[byte0 >>> 4 & 0xf]; - str[k++] = hexDigits[byte0 & 0xf]; - } - return new String(str); - } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { - return null; - } - } - - /** - * 请求网络数据 - */ - public static void requestNetData(String queryWord, TranslateCallBack callBack) { - // TODO 读取本地缓存 - - String urlString = BASE_URL + genarator(queryWord); - - try { - URL url = new URL(urlString + queryWord); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setConnectTimeout(5000); - conn.setReadTimeout(5000); - conn.setRequestMethod(conn.getRequestMethod()); - - // 连接成功 - if (conn.getResponseCode() == 200) { - InputStream ins = conn.getInputStream(); - - // 获取到Json字符串 - String content = StreamUtils.getStringFromStream(ins); - System.out.println("返回值:" + content); - if (content != null) { - callBack.onSuccess(new Gson().fromJson(content, callBack.mType)); - } else { - callBack.onFailure(TranslationBean.EMPTY); - } - } else { - callBack.onFailure(conn.getResponseMessage()); - } - } catch (java.io.IOException e) { - e.printStackTrace(); - callBack.onFailure(e.getMessage()); - } - } - - public static void requestData(String q, TranslateCallBack callBack) { - String salt = String.valueOf(System.currentTimeMillis()); - String from = "EN"; - String to = "zh-CHS"; - String sign = md5(appKey + q + salt + appSec); - Map params = new HashMap(); - params.put("q", q); - params.put("from", from); - params.put("to", to); - params.put("sign", sign); - params.put("salt", salt); - params.put("appKey", appKey); - try { - String result = requestForHttp("http://openapi.youdao.com/api", params); - if (result == null) { - callBack.onFailure("请求失败"); - } else { - callBack.onSuccess(new Gson().fromJson(result, callBack.mType)); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static void requestGoogle(String q, TranslateCallBack callBack) { - Map params = new HashMap<>(); - params.put("q", q); - try { - String result = requestForHttp("http://qr.i02.win/translate", params); - if (result != null) { - callBack.onSuccess(new Gson().fromJson(result, callBack.mType)); - } else { - callBack.onFailure("请求失败"); - } - } catch (Exception e) { - e.printStackTrace(); - callBack.onFailure(e.getMessage()); - } - } public static String requestForHttp(String url, Map requestParams) throws Exception { String result = null;