灵云 Machine Translation HTTP 开发手册

灵云翻译API通过HTTP接口对外提供多语种互译服务。

支持翻译方向:

简体中文与英文、维吾尔语、日语、韩语、俄语、法语之间的互译。

服务接口地址

http://api.hcicloud.com:8880/mt/translate

快速体验

接入方式申请

  1. 注册灵云开放平台
  2. 创建应用,按提示一次输入应用名称等信息
  3. 选择机器翻译能力并提交
  4. 应用创建后,在应用详情->应用授权界面中查看appKeydevKey

其中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-typetext/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 参数说明

目前支持的参数为capkeyproperty

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 请求文本过长

results matching ""

    No results matching ""