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;