百度翻译开放平台API

文|Seraph

凡事都有原因
接触百度翻译API,主要是想用c++实现一个和TTS技术结合的翻译软件;
当然,还有一个原因就是200万字以内API调用免费。

申请与下载资料

  1. 首先需要申请接入百度翻译API接口。
  2. . 在接入文档中,可以看到相关步骤和使用方法,可以先仔细看一下,主要是了解api接口工作方式,以及其中涉及的一些知识点。
  3. 下载各语言DEMO中的相应代码,这里选择C版。

测试自己的appid及密钥的有效性

  1. 这里我们可以先试一下文档中提供的地址链接,在浏览器地址栏中输入
    http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
    可以接收到测试例子结果:\u82f9\u679c。(即为"苹果“的Unicode码)
  2. 测试自己appid及密码
    将以上地址中appid的值替换为自己申请的,q可以替换为自己想翻译的语句,salt为一个随机数。
    然后,使用在线MD5加密工具加密新组成的**“appid+q+salt+密钥”字符串,并得到32位小写MD5码**,将该码替换sign。
    再在地址栏中输入该链接,如果得到类似测试例子的信息,则表示成功。
    dst字段表示翻译结果
    注意: 该身份认真过程类似与HTTP协议中DIGEST认证,更改加密字符串中的任何信息,都需要重新加密得到MD5字符串。(有兴趣的,可以去了解一下HTTP协议中的几种身份认证方式)

构建开发环境

  1. 打开C版的Demo后,发现需要以及头文件
    这个两个文件分别来自libcurl和openssl开发库
    他们的编译过程可见
    (1)libcurl
    (2)openssl
  2. 编译好lib后,用VS2015搭建工程,建win32 Comsole Application即可
  3. 复制demo中代码并粘贴到源文件中,并修改如下:
#include 
#include 
#include 
#include 
#include 
#pragma comment(lib,"libcurl.lib")
#pragma comment(lib,"libcurld_imp.lib")
#pragma comment(lib,"libcrypto.lib")
int main(void)
{
	CURL *curl;
	CURLcode res;

	curl = curl_easy_init();
	if (curl) {
		char myurl[1000] = "http://api.fanyi.baidu.com/api/trans/vip/translate?";
		char *appid = "20170520000048515";    //replace myAppid with your own appid
		char *q = "pear";          //replace apple with your own text to be translate, ensure that the input text is encoded with UTF-8!
		char *from = "en";          //replace en with your own language type of input text
		char *to = "zh";            //replace zh with your own language type of output text
		char salt[60];
		int a = rand();
		sprintf_s(salt, "%d", a);
		char *secret_key = "sERmjSSdTNowRYvEABOr";   //replace mySecretKey with your own mySecretKey
		char sign[120] = "";
		strcat_s(sign, appid);
		strcat_s(sign, q);
		strcat_s(sign, salt);
		strcat_s(sign, secret_key);
		printf("%s\n", sign);
		unsigned char md[16];
		int i;
		char tmp[3] = { '\0' }, buf[33] = { '\0' };
		MD5((unsigned char *)sign, strlen(sign), md);
		for (i = 0; i < 16; i++) {
			sprintf_s(tmp, "%2.2x", md[i]);
			strcat_s(buf, tmp);
		}
		printf("%s\n", buf);
		strcat_s(myurl, "appid=");
		strcat_s(myurl, appid);
		strcat_s(myurl, "&q=");
		strcat_s(myurl, q);
		strcat_s(myurl, "&from=");
		strcat_s(myurl, from);
		strcat_s(myurl, "&to=");
		strcat_s(myurl, to);
		strcat_s(myurl, "&salt=");
		strcat_s(myurl, salt);
		strcat_s(myurl, "&sign=");
		strcat_s(myurl, buf);
		printf("%s\n", myurl);

		//设置访问的地址
		curl_easy_setopt(curl, CURLOPT_URL, myurl);
		res = curl_easy_perform(curl);
		/* Check for errors */
		if (res != CURLE_OK)
			fprintf(stderr, "curl_easy_perform() failed: %s\n",
				curl_easy_strerror(res));

		long responseCode = 0;
		curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &responseCode);
		/* always cleanup */
		curl_easy_cleanup(curl);

	}
	return 0;
}

主要添加了lib,以及将不安全函数strcat、sprintf都换成strcat_s、sprintf_s。
同时将

MD5((unsigned char *)sign, strlen((unsigned char *)sign), md);

换成

MD5((unsigned char *)sign, strlen(sign), md);

4.为工程添加之前生成的libcurl及openssl的库文件
这里用到的相关版本号:openssl-1.1.0e、curl-7.26.0
lib主要用到libcurl.lib、libcurld_imp.lib、libcrypto.lib
同时,记得将相关dll放置exe文件目录下,如libcurld.dll、libcrypto-1_1.dll。

结果

百度翻译开放平台API_第1张图片
接下来就可以将代码修改成自己想要的功能样子了,也可以按自己设计再添加一些界面和功能。

凡人皆有一死!------《权利的游戏》

你可能感兴趣的:(API)