java有道翻译

package com.uri.demo;


import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;


import com.google.gson.JsonArray;
import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;


public class TestUriForMeMory {


/**

* @param 从内存中读取
* @throws IOException
*/


public static void main(String[] args) throws IOException {

String sb=jsonload("word");
System.out.println(sb);

}


public static String jsonload(String word) throws MalformedURLException, IOException, UnsupportedEncodingException {
String wz="http://fanyi.youdao.com/openapi.do?"
+ "keyfrom=TellToMe&key=1289928476&"
+ "type=data&doctype=json&version=1.1&q="
+ word;
//返回内容
StringBuffer sbuffer=new StringBuffer();

//创建地址链接
  URL url=new URL(wz);

//打开网络链接
  URLConnection urlconn=url.openConnection();
        
//获取网络链接资源流
  InputStream input= urlconn.getInputStream();
  
  //将获取的网页内容转换为utf-8模式
  InputStreamReader inreader=new InputStreamReader(input,"utf-8");
  //将读取内容写入到内存 从内存中读取!
  char[] ch=new char[1024];
  StringBuffer sb=new StringBuffer();
  int result;
  while((result=inreader.read(ch))!=-1){
   String st=new String(ch,0,result);
   sb.append(st);              
  }  
 //将输出结果给String
  String jieguo= JosnParser(sb.toString());
  sbuffer.append(jieguo);
  //关闭流   
  inreader.close();
  input.close();
  
  return sbuffer.toString();
}


static String JosnParser(String path) throws JsonIOException, JsonSyntaxException, FileNotFoundException{

//返回值
StringBuffer sb=new StringBuffer();
//创建json解析器
  JsonParser jp=new JsonParser();
//获取解析文件路径
  JsonObject obj=(JsonObject) jp.parse(path);
  //将解析结果打印
  JsonArray st=obj.get("translation").getAsJsonArray();
  for(int i=0;i<st.size();i++)
{
 String  result=st.get(i).getAsString();
 sb.append(result+"\n");
}
 
  
  System.out.println("详细解析");
  //获取对象内子对象数组内的元素
  JsonObject jso= obj.get("basic").getAsJsonObject();
  JsonArray array=  jso.get("explains").getAsJsonArray();
  for(int i=0;i<array.size();i++)
{
 String  result=array.get(i).getAsString();
 sb.append(result+"\n");  
}
  return sb.toString();
}




}

====================================

eclipse JFrame button 中的关键代码!

ok_btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String text= input_tv.getText();
//判断textview是否为空!
if(text!=null&&!text.equals("")){
//URLEncoder.encode("你好","utf-8")
//如果是中文
if(text.matches("^[\u4e00-\u9fa5]{0,}$")){
try {
//翻译
String result= TestUriForMeMory.jsonload(URLEncoder.encode(text,"utf-8"));
result_Pl.setText(result);

} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}else{

try {
String result= TestUriForMeMory.jsonload(text);
result_Pl.setText(result);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
});

### Java 调用有道翻译 API 示例 为了使用 Java 调用有道翻译 API 实现多语言翻译功能,可以按照以下方式构建请求并解析返回的数据。此过程涉及创建 HTTP 请求、发送查询参数以及处理 JSON 响应。 #### 构建 HTTP 请求 首先,需要导入必要的库来发起网络请求和处理 JSON 数据: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; import com.google.gson.Gson; ``` 接着定义一个方法用于发送 GET 或 POST 请求到有道翻译 API 的 URL 地址,并附带相应的参数如 `q` (待翻译文本), `from` 和 `to` (源语言与目标语言): ```java public class YoudaoTranslate { private static final String APP_KEY = "your_app_key"; // 替换成自己的应用ID private static final String APP_SECRET = "your_app_secret"; // 替换成自己的密钥 public static void main(String[] args) throws Exception { String queryStr = "你好"; String fromLang = "auto"; String toLang = "en"; StringBuilder urlBuilder = new StringBuilder(); urlBuilder.append("https://openapi.youdao.com/api?") .append("q=").append(URLEncoder.encode(queryStr, "UTF-8")) .append("&from=").append(fromLang) .append("&to=").append(toLang) .append("&appKey=").append(APP_KEY); long salt = System.currentTimeMillis(); String sign = SignUtil.generateSign(queryStr, APP_SECRET, salt); urlBuilder.append("&salt=").append(salt).append("&sign=").append(sign); URL url = new URL(urlBuilder.toString()); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); StringBuffer result = new StringBuffer(); String line; while ((line = rd.readLine()) != null){ result.append(line); } Gson gson = new Gson(); TranslationResponse response = gson.fromJson(result.toString(), TranslationResponse.class); List<String> translations = response.getTranslation(); System.out.println(translations); } } ``` 上述代码片段展示了如何利用 Java 发送带有必要参数的 HTTP 请求给有道翻译服务接口[^4]。这里需要注意的是,在实际开发过程中还需要考虑错误码判断逻辑和服务端返回的具体结构化数据解析等问题。 对于签名生成部分,则可以通过下面的方式完成: ```java class SignUtil { public static String generateSign(String q, String appSecret, Long salt) { try{ MessageDigest md5 = MessageDigest.getInstance("MD5"); StringBuilder sb = new StringBuilder(); sb.append(appSecret) .append(q) .append(salt) .append(appSecret); byte[] bytes = md5.digest(sb.toString().getBytes("utf-8")); StringBuilder hexValue = new StringBuilder(); for(byte b : bytes){ int val = 0xFF & b; if(val < 16) hexValue.append("0"); hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); } catch(Exception e){ throw new RuntimeException(e.getMessage()); } } } ``` 这段辅助函数负责根据官方文档说明计算 MD5 加密后的字符串作为安全验证的一部分。 最后,关于 `TranslationResponse` 类的设计可以根据实际情况调整字段映射关系,确保能正确反映 API 返回的结果格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值