灵云 Machine Translation HTTP 开发手册
灵云翻译API通过HTTP接口对外提供多语种互译服务。
支持翻译方向:
简体中文与英文、维吾尔语、日语、韩语、俄语、法语之间的互译。
服务接口地址
http://api.hcicloud.com:8880/mt/translate
快速体验
接入方式申请
- 注册灵云开放平台
- 创建应用,按提示一次输入应用名称等信息
- 选择
机器翻译能力
并提交 - 应用创建后,在应用详情->应用授权界面中查看
appKey
与devKey
其中devKey
涉及调用者的身份认证,需妥善保管,切勿丢失。
CURL 访问示例
翻译中文你好
为英文:
计算翻译请求所需的SESSION_KEY
:
# 当前时间,格式必须按 yyyy-MM-dd HH:mm:ss
request_date='2019-04-02 10:10:11'
devkey=YOUR_DEVEKEY
# 连接这两个值,计算得出一个32位md5值,作为发起访问的`SESSION_KEY`
SESSION_KEY=md5('2019-04-02 10:10:11YOUR_DEVEKEY')
发起请求:
curl -X POST \
http://api.hcicloud.com:8880/mt/translate \
-H 'x-app-key: YOUR_APPKEY' \
-H 'x-request-date: 2019-04-02 10:10:11' \
-H 'x-result-format: json' \
-H 'x-sdk-version: 8.0' \
-H 'x-session-key: SESSION_KEY' \
-H 'x-task-config: capkey=mt.cloud.translate,property=cn2en' \
-H 'x-udid: 0:00ffbed8861abfebfbff000306c3' \
-d '你好'
响应:
{
"ResponseInfo": {
"ResCode": "Success",
"ResMessage": "Success",
"ErrorNo": "0",
"Result_Token": "2_141_50_5665_20190402190936_2503817",
"ResultText": "Hello.",
"Score": "100"
}
}
Java 语言示例
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TranslateDemo{
public static void main(String[] args) throws Exception{
String appkey = "YOUR_APPKEY";
String devkey = "YOUR_DEVKEY";
String translateUrl = "http://api.hcicloud.com:8880/mt/translate";
String transData = "你好";
String property = "cn2en"; // 翻译方向:中文到英文
// 计算出session key
Date currentTime = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String requestDate = dateFormat.format(currentTime);
String sessionKey = MD5(requestDate+devkey);
// 创建连接
URL url=new URL(translateUrl);
HttpURLConnection httpConn=(HttpURLConnection)url.openConnection();
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
httpConn.setRequestMethod("POST");
// 设置请求参数,均为Header参数
httpConn.setRequestProperty("x-app-key", appkey);
httpConn.setRequestProperty("x-request-date", requestDate);
httpConn.setRequestProperty("x-result-format", "json");
httpConn.setRequestProperty("x-sdk-version", "7.0");
httpConn.setRequestProperty("x-session-key", sessionKey);
httpConn.setRequestProperty("x-task-config", "capkey=mt.cloud.translate,property="+property);
httpConn.setRequestProperty("x-udid", "101:1234567890");
httpConn.setRequestProperty("Charset", "UTF-8");
// 发起连接
httpConn.connect();
// 发送待翻译的内容
PrintWriter printWriter = new PrintWriter(httpConn.getOutputStream());
printWriter.print(transData);
printWriter.flush();
printWriter.close();
//获得响应状态
int resultCode=httpConn.getResponseCode();
StringBuffer stringBuffer=new StringBuffer();
BufferedReader responseReader=new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8")) ;
String readLine = responseReader.readLine();
responseReader.close();
System.out.println(readLine);
}
public static String MD5(String key) {
char hexDigits[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
};
try {
byte[] btInput = key.getBytes();
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 (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
return null;
}
}
}
Python 语言示例
Python2.6
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import hashlib
import time
import json
import urllib2
appkey = 'YOUR_APPKEY'
devkey = 'YOUR_DEVKEY'
url = 'http://api.hcicloud.com:8880/mt/translate'
requestDate = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
sessionKey = hashlib.md5(requestDate+devkey).hexdigest()
headers = {'x-app-key': appkey,\
'x-request-date' : requestDate, \
'x-result-format': 'json', \
'x-sdk-version' : '7.0', \
'x-session-key' : sessionKey, \
'x-task-config': 'capkey=mt.cloud.translate,property=cn2en',\
'x-udid':'101:1234567890'}
transdata = '你好'
request = urllib2.Request(url=url, data=transdata, headers=headers)
result = urllib2.urlopen(request).read()
mtresult = json.loads(result)
print json.dumps(mtresult,indent=1,ensure_ascii=False, encoding='UTF-8')
接口说明
接口请求
开发者通过POST请求发送指定字段来访问翻译服务。
HTTP POST
翻译API 通过此地址提供服务
http://api.hcicloud.com:8880/mt/translate
HTTP POST Request Headers
翻译接口的访问参数包含在Header中,如下表所示:
顺序 | 名称 | 值(例子) | 含义 | 备注 |
---|---|---|---|---|
1 | x-app-key | defa1234 | 应用标识 | 必选, 由灵云开放平台提供 |
2 | x-sdk-version | 5.0 | sdk版本号 | 必选, 使用http接口时,可以指定为5.0 |
3 | x-request-date | 2019-4-02 10:10:11 | 请求时间 | 必选,时间格式参考例子中的格式 |
4 | x-task-config | capkey=mt.cloud.translate,property=cn2en | 任务参数信息 | 必选, 为name=value形式,多个参数以逗号隔开。 详见x-task-config 参数说明 |
5 | x-session-key | 18EA9384AA34 | 请求数据签名 | 必选, x-session-key生成算法说明: x-session-key =md5(x-request-date + devkey) |
6 | x-udid | 101:1234567890 | 设备标识 | 必选, 如使用设备取设备标识号, 如不使用设备设置为例子中的默认值 |
7 | x-result-format | json | 返回结果的格式 | 非必选。 默认为xml, 支持json |
HTTP POST Request Body
需要翻译文本,使用utf-8编码
请求样例
POST
http://api.hcicloud.com:8880/mt/Translate
Request Header
x-app-key: b95*****
x-sdk-version: 5.0
x-request-date: 2019-4-02 10:10:11
x-task-config: capkey=mt.cloud.translate,property=cn2en
x-session-key: 5474998d4c58b98172ab208bca2*****
x-udid: 101:1234567890
x-result-format:json
Host: api.hcicloud.com:8880
Content-Length: 6
Request Body
你好
接口应答
HTTP POST Response Headers
包含Response body的内容类型Content-type
为 text/xml
HTTP POST Response Body
为json或xml格式的结果,根元素ResponseInfo
描述如下:
顺序 | 名称 | 值(例子) | 含义 | 备注 |
---|---|---|---|---|
1 | ResCode | Success (FAILED) | 成功(处理中,失败) | 必选 |
2 | ResMessage | 成功(处理中,失败) | 成功(处理中,失败) | 必选 |
3 | Result_Token | 1_8_20_21608_20131118192712_0 | 结果令牌 | 成功时必选 |
4 | ResultText | 你好 | 识别结果 | 成功时必选 |
5 | Score | 5 | 结果评分 | 成功时必选 |
6 | ErrorNo | 8 | 失败时错误码 | 失败时必选 |
应答成功样例
Reponse
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 02 Apr 2019 09:46:35 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 165
Connection: keep-alive
time_used: 852
{
"ResponseInfo": {
"ResCode": "Success",
"ResMessage": "Success",
"ErrorNo": "0",
"Result_Token": "2_141_50_5646_20190402174635_2535917",
"ResultText": "Hello.",
"Score": "100"
}
}
应答失败样例(填写了错误的appkey)
Response
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 02 Apr 2019 10:57:03 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 99
Connection: keep-alive
time_used: 1
{
"ResponseInfo": {
"ResCode": "Failed",
"ErrorNo": 20402,
"ResMessage": "Bad Value for Header x-app-key"
}
}
x-task-config 参数说明
目前支持的参数为capkey
与property
capkey
指定所需的翻译能力:
capkey | 备注 |
---|---|
mt.cloud.translate | 机器翻译,用property 字段区分翻译种类 |
property
翻译属性:
property | 备注 |
---|---|
cn2en | 简体中文到英文 |
cn2uy | 简体中文到维吾尔文 |
cn2ja | 简体中文到日语 |
cn2ko | 简体中文到韩语 |
cn2ru | 简体中文到俄语 |
cn2fr | 简体中文到法语 |
en2cn | 英文到简体中文 |
uy2cn | 维吾尔文到简体中文 |
ja2cn | 日语到简体中文 |
ko2cn | 韩语到简体中文 |
ru2cn | 俄语到简体中文 |
fr2cn | 法语到简体中文 |
响应代码ErrorNo
返回代码 | 错误原因说明 |
---|---|
0 | 成功 |
10001 | 无资源可用 |
10002 | 请求文本为空 |
10003 | 解析参数错误 |
10004 | 引擎错误,处理失败 |
10005 | 请求文本非UTF-8编码 |
10006 | 参数capkey缺失. |
10007 | 参数capkey错误 |
10008 | 参数property缺失. |
10009 | 参数property错误 |
10010 | 请求文本过长 |