机器翻译常见问题

1. 免费用户如何申请成为正式用户?

(1)绑定邮箱,申请成为正式用户前先绑定邮箱。

(2)提交申请,请先填写完整的API服务合作协议、开发者身份证正反面扫描件、公司营业执照扫描件发送至联系邮箱:fanyi_api@sogou-inc.com

(3)审核通过,提交的申请资料审核通过后,自动转为正式付费用户。

2. 如果本页内容没有帮助到您,如何获取及时进一步的咨询?

(1)欢迎添加我们的技术支持QQ群,群号:514023837

(2)目前仅对注册的用户开发,进群前请发送您的pid进行验证,管理员验证通过即可加入。

(3)描述遇到的问题的时候,请尽量详细,把您的问题进行反馈,我们会第一时间做出反馈。

3. 关于付费方式有哪些?

目前只支持固定充值方式。

4. 请问常见错误码都有哪些?

(1)报1001服务错误,是怎么回事?

答:不支持的语言类型,请参照前面的61种语种。

(2)报1002服务错误,是怎么回事?

答:翻译文本过长。

(3)报1003服务错误,是怎么回事?

答:无效的pid,请确认自己的pid是否合法。

(4)报1004服务错误,是怎么回事?

答:试用pid,流量已经到达上限。

(5)报1005服务错误,是怎么回事?

答:pid请求流量过高。

(6)报1006服务错误,是怎么回事?

答:账户内的余额不足。

(7)报1007服务错误,是怎么回事?

答:参数未加盐,salt参数不存在。

(8)报1008服务错误,是怎么回事?

答:参数签名sign不存在。

(9)报1009服务错误,是怎么回事?

答:参数签名sign不正确。

(10)报10010服务错误,是怎么回事?

答:文本不存在。

(11)报1050服务错误,是怎么回事?

答:系统服务器内部错误,请进行捕获,同时保留当时的现场,同我们进行联系沟通

5. 为什么使用POST?

(1)出于安全性考虑,我们只支持使用POST请求。

(2)出于对大量翻译文本内容的考虑,也必须使用POST请求。

6. JS如何跨域请求?

(1)不支持JSONP调用。

(2)建议在服务端直连搜狗翻译服务以保证pid和密钥不被泄露。

(3)建议使用您自己公司的nginx进行转发解决跨域。

7. 如何查看自己目前已经使用的流量?

(1)采用邮件通知和短信通知的方式通知您。

(2)通知内容会有日账单和月账单两种,该功能预计近期开放。

8. 每个月的限额是啥规则?

每当到下一个自然月第一天,会自动重新初始化本月的限额。

9. MD5如何计算?

python求md5:


import hashlib
md5=hashlib.md5(‘fafafafafatest1508404016012秘钥’.encode('utf-8')).hexdigest()
print(md5)   

java求md5:


import org.apache.commons.codec.digest.DigestUtils;
public class MD5Util {
  public static String getMD5(String source){
      if(source==null) {
          return null;
      }
      return getMD5(source,null);
  }
  public static String getMD5(String source,String encryptcode){
      if(source==null) {
          return null;
      }
      if(encryptcode==null) {
          return DigestUtils.md5Hex(source);
      }
      return DigestUtils.md5Hex(source+encryptcode);
  }

  public static void main(String[] args) {
      System.out.println(getMD5("fafafafafatest1508404016012秘钥"));
  }
}    

10. Sign签名参数如何计算?

(1)签名规则:sign = md5(pid+q+salt+用户密钥)。

(2)"+"加号表示字符串链接,不是作为签名内容。

(3)所有参数(pid,q,salt,用户秘钥)都要去除首尾空格。

(4)调用上面的md5求值方法,即可得到您的签名sign值。

11. 如何具体接入?

python接入:

(1)python httpclient:


import http.client
conn = http.client.HTTPConnection("fanyi.sogou.com:80")
payload = "from=en&to=zh-CHS&pid=fafafafafa&q=test&sign=d097672e4ecca556d1886be8e9da421a&salt=1508404016012"
headers = {
    'content-type': "application/x-www-form-urlencoded",
    'accept': "application/json"
    }
conn.request("POST", "/reventondc/api/sogouTranslate", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

(2)python Request:


import requests
url = "http://fanyi.sogou.com:80/reventondc/api/sogouTranslate"
payload = "from=en&to=zh-CHS&pid=fafafafafa&q=test&sign=d097672e4ecca556d1886be8e9da421a&salt=1508404016012"
headers = {
    'content-type': "application/x-www-form-urlencoded",
    'accept': "application/json"
    }
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)

java接入:

(3)ok java:


OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "from=en&to=zh-CHS&pid=fafafafafa&q=my%20name%20is%20litao&sign=d097672e4ecca556d1886be8e9da421a&salt=1508404016012");
Request request = new Request.Builder()
  .url("http://fanyi.sogou.com:80/reventondc/api/sogouTranslate")
  .post(body)
  .addHeader("content-type", "application/x-www-form-urlencoded")
  .addHeader("accept", "application/json")
  .build();
Response response = client.newCall(request).execute();

(4)unirest:


HttpResponse response = Unirest.post("http://fanyi.sogou.com:80/reventondc/api/sogouTranslate")
.header("content-type", "application/x-www-form-urlencoded")
.header("accept", "application/json")
.body("from=en&to=zh-CHS&pid=fafafafafa&q=my%20name%20is%20litao&sign=d097672e4ecca556d1886be8e9da421a&salt=1508404016012")
.asString();

(5)httpclient 4.5:


PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager();
manager.setMaxTotal(400);
manager.setDefaultMaxPerRoute(30);
CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(manager)
        .setRetryHandler(RetryHandler)
        .setDefaultRequestConfig(requestConfig)
        .build();

HttpPost httpPost = new HttpPost(baseInfo.getString("http://fanyi.sogou.com:80/reventondc/api/sogouTranslate"));
List nvps = new ArrayList<>();
nvps.add(new BasicNameValuePair("from", "en"));
nvps.add(new BasicNameValuePair("to", "zh-CHS"));
nvps.add(new BasicNameValuePair("pid", "fafafafafa"));
nvps.add(new BasicNameValuePair("q", "my name"));
nvps.add(new BasicNameValuePair("sign", "d097672e4ecca556d1886be8e9da421a"));
nvps.add(new BasicNameValuePair("salt", "1508404016012"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, baseInfo.getString("charset")));
HttpRequestBase requestBase = httpPost;
requestBase.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36");
requestBase.addHeader("content-type", "application/x-www-form-urlencoded")
requestBase.addHeader("accept", "application/json")
CloseableHttpResponse response = httpClient.execute(requestBase);

C#接入:


var client = new RestClient("http://fanyi.sogou.com/reventondc/api/sogouTranslate");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("accept", "application/json");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "from=zh-CHS&pid=683d8fa0d3775d267efaaa33a8c28b3a&q=%E6%90%9C%E7%8B%97&sign=5aaedfee6767c9556c2c92010c1049a6&salt=1513067904772&to=en", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);