Java接口测试之使用有道翻译API
写接口测试框架,找了有道翻译API来当测试数据
package com.httpGetTest; import java.beans.Encoder;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map; public class CreatHttpUrl { public static void main(String[] args) { System.out.print(creatUrl("teacher", "en","zh-CHS"));
}
static String appKeyID = "7743eee7f7e11d75";
static String appKey = "bwPochuFLSutY4nGvyJoeUNn9GBQduzl"; /**
* 生成有道URL
* @param 要搜索的词
* @param 源语言
* @param 目标语言
* @return
*/
public static String creatUrl(String query,String from,String to)
{ String salt = String.valueOf(System.currentTimeMillis());
String sign = md5(appKeyID + query + salt + appKey);
Map<String, String> params = new HashMap<String,String>();
params.put("q", query);
params.put("from", from);
params.put("to", to);
params.put("sign", sign);
params.put("salt", salt);
params.put("appKey", appKeyID); String urlStr = "https://openapi.youdao.com/api";
return getUrlWithQueryString(urlStr, params); }
public static String createParam(String query,String from,String to)
{
String salt = String.valueOf(System.currentTimeMillis());
String sign = md5(appKeyID + query + salt + appKey);
Map<String, String> params = new HashMap<String,String>();
params.put("q", query);
params.put("from", from);
params.put("to", to);
params.put("sign", sign);
params.put("salt", salt);
params.put("appKey", appKeyID); String urlStr = "";
return getUrlWithQueryString(urlStr, params);
}
/**
* 生成32位md5摘要
* @param str
* @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'};
byte [] btInput = string.getBytes();
try {
/** 获得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 (Exception e) {
e.printStackTrace();
return null;
}
}
public static String getUrlWithQueryString(String url,Map<String, String>params)
{
if (params == null) {
return url;
} StringBuilder builder = new StringBuilder(url);
if (url.contains("?")) {
builder.append("&");
} else {
builder.append("?");
} int i = 0;
for (String key : params.keySet()) {
String value = params.get(key);
if (value == null) { //过滤空key
continue;
} if (i != 0) {
builder.append('&');
} builder.append(key);
builder.append('=');
builder.append(encode(value)); i++; }
return builder.toString();
}
/**
* 进行URL编码
* @param input
* @return
*/
public static String encode(String input)
{
if (input == null) {
return "";
} try {
return URLEncoder.encode(input,"utf-8");
} catch (Exception e) {
e.printStackTrace();
}
return input;
}
}
来个链接:http://ai.youdao.com/docs/api.s
可以自己根据有道翻译的接口协议做测试
Java接口测试之使用有道翻译API的更多相关文章
- Android使用有道翻译API实如今线翻译功能
在Android应用中,加入在线翻译的功能,这里调用的是有道翻译的API. 使用有道翻译API.首先要申请一个key,申请地址为:path=data-mode">有道翻译API申请地址 ...
- [Python] 使用有道翻译API
Python 使用youdao (有道翻译)API 想写一个给自己记录背单词状况的软件,需要获取英文单词的中文释义(基本功能).考虑使用有道翻译的API实现获取英文单词的中文释义的方法. 获取API_ ...
- 利用有道翻译Api实现英文翻译功能
有道翻译提供了翻译和查词的数据接口.通过数据接口,您可以获得一段文本的翻译结果或者查词结果. 通过调用有道翻译API数据接口,您可以在您的网站或应用中更灵活地定制翻译和查词功能. 第一步: ...
- C++中使用Curl和JsonCpp调用有道翻译API实现在线翻译
使用C++开发一个在线翻译工具,这个想法在我大脑中过了好几遍了,所以就搜了下资料,得知网络上有很多翻译API,这里我选择我平时使用较多的有道翻译API进行在线翻译工具开发的练习.翻译API返回的结果常 ...
- 记微信开发(有道翻译api)
记微信开发(有道翻译api) 记微信开发(有道翻译api) 效果: 有道翻译api申请: 地址:http://fanyi.youdao.com/openapi code: <?php/** * ...
- 有道翻译API
轻奢侈品_百度百科 轻奢侈品 有道翻译API 有道翻译API申请成功 API key:72763558 keyfrom:lexus-studio
- tornado框架学习及借用有道翻译api做自动翻译页面
趁着这几天有时间,就简单的学了一下tornado框架,简单做了个自动翻译的页面 仅为自己学习参考,不作其他用途 文件夹目录结构如下: . ├── server.py ├── static │ └─ ...
- C++调用有道翻译API实现在线翻译之发声篇
大概半月前写了一篇博文:C++中使用Curl和JsonCpp调用有道翻译API实现在线翻译, 得到大家的热情捧场,有人看了文章说要是能发声不是更好,我觉得说的也是哈,能听到专家的标准发音,那该是多美的 ...
- 调用有道翻译API
前两天朋友说起NASA开放了数据API,今儿突然想起从来没用过外部提供的API,然而简单用得多的貌似是有道词典API,就像试试,本来觉得应该挺简单的,用urllib模块很快就实现了. 不过测试时才发现 ...
随机推荐
- bzoj 3328 : PYXFIB
Discription Input 第一行一个正整数,表示数据组数据 ,接下来T行每行三个正整数N,K,P Output T行,每行输出一个整数,表示结果 Sample Input 1 1 2 3 S ...
- 自签名证书安全性问题研究https(ssl)
先看下https(ssl)的好处,以及为什么要用: http://imweb.io/topic/565c71673ad940357eb99879 https://zh.wikipedia.org/wi ...
- interesting-exploit
http://whereisk0shl.top/cve-2017-7269-iis6-interesting-exploit.html
- 邁向IT專家成功之路的三十則鐵律 鐵律二:IT專家專業之道–專精
在IT技術的領域當中有許多的類別,若要細分那可真是難以一一列舉,但常見的大致有軟體研發工程師.韌體研發工程師.系統分析師.網路工程師.系統工程師.維護工程師.動畫設計師.製圖工程師.以及各類別的專業電 ...
- display:flex不兼容Android、Safari低版本的解决方案 【flex布局】
引自 http://www.cnblogs.com/shimily/articles/7943370.html <!DOCTYPE html> <html lang="en ...
- Android开发之实现锁屏功能
锁屏须要引入设备超级管理员.在文档Android开发文档的Administration中有具体的说明. Android设备管理系统功能和控制訪问. 主要有一下几个步骤: 1 创建广播接收者,实现De ...
- start-dfs.sh 和 start-all.sh的区别
start-dfs.sh 只启动namenode 和datanode, start-all.sh还包括yarn的resourcemanager 和nodemanager 之前就所以因为只启动了star ...
- 【转】VMware 11.0 简体中文版|附永久密钥
VMware 11.0 简体中文版|附永久密钥 昨天,VMware虚拟机11.0 简体中文版正式发布,值得注意的是新版抛弃了32位系统支持,安装包体积大幅减小, 新增Windows 10 技术预览版支 ...
- 超越MySQL:三个流行MySQL分支的对比(转)
导读:尽管MySQL是最受欢迎的程序之一,但是许多开发人员认为有必要将其拆分成其他项目,并且每个分支项目都有自己的专长.该 需求以及Oracle对核心产品增长缓慢的担忧,导致出现了许多开发人员感兴趣的 ...
- 嵌入式开发之cgic库---cgi库的使用
很幸运!用C语言写CGI程序还可以有比较简单的方式,那就是我们可以借助使用第三方库CGIC(CGIC是一个功能比较强大的支持CGI开发的标准C库,并支持Linux, Unix 和Windows等多操作 ...