100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 腾讯AI开放平台使用尝试:代理后的文本翻译API使用方式

腾讯AI开放平台使用尝试:代理后的文本翻译API使用方式

时间:2020-02-11 23:19:36

相关推荐

腾讯AI开放平台使用尝试:代理后的文本翻译API使用方式

这篇文章介绍一下如何结合代理服务器使用腾讯AI开放平台提供的文本翻译API。

目录

事前准备请求参数返回格式示例代码使用示例常见问题结果确认总结参考内容

事前准备

实现需要申请申请账号,获得如下接入凭证:

AppID:应用IDAppKey:应用密钥

目前免费账号可创建一百个应用,每个应用有不同的AppID和AppKey,详细操作可参看:

https://liumiaocn./article/details/108374404

代理服务器的设定可参看:

macOS版squid:https://liumiaocn./article/details/108629944Linux版squid:/liumiaocn/article/details/80586879


请求参数

文本翻译的功能目前是通过腾讯翻译君提供的,请求的参数信息如下所示:

返回格式

返回格式就简单的多,状态/翻译内容/翻译后内容,非常容易理解:


示例代码

腾讯官方给了一个简单的PHP的示例,这个例子中只需要修改AppID、AppKey以及翻译内容就可以进行功能验证了,这里将其稍整理整理为如下php文件,使用格式为:

使用格式:php translate_through_api.ph -u $APP_ID -p $APP_KEY -s “带翻译的内容”

代码内容

liumiaocn:php liumiao$ cat translate_through_api.php <?php// getReqSign :根据 接口请求参数 和 应用密钥 计算 请求签名// 参数说明// - $params:接口请求参数(特别注意:不同的接口,参数对一般不一样,请以具体接口要求为准)// - $appkey:应用密钥// 返回数据// - 签名结果function getReqSign($params /* 关联数组 */, $appkey /* 字符串*/){// 1. 字典升序排序ksort($params);// 2. 拼按URL键值对$str = '';foreach ($params as $key => $value){if ($value !== ''){$str .= $key . '=' . urlencode($value) . '&';}}// 3. 拼接app_key$str .= 'app_key=' . $appkey;// 4. MD5运算+转换大写,得到请求签名$sign = strtoupper(md5($str));return $sign;}// doHttpPost :执行POST请求,并取回响应结果// 参数说明// - $url :接口请求地址// - $params:完整接口请求参数(特别注意:不同的接口,参数对一般不一样,请以具体接口要求为准)// 返回数据// - 返回false表示失败,否则表示API成功返回的HTTP BODY部分function doHttpPost($url, $params){$curl = curl_init();$response = false;do{// 1. 设置HTTP URL (API地址)curl_setopt($curl, CURLOPT_URL, $url);// 2. 设置HTTP HEADER (表单POST)$head = array('Content-Type: application/x-www-form-urlencoded');curl_setopt($curl, CURLOPT_HTTPHEADER, $head);// 3. 设置HTTP BODY (URL键值对)$body = http_build_query($params);curl_setopt($curl, CURLOPT_POST, true);curl_setopt($curl, CURLOPT_POSTFIELDS, $body);// 4. 调用API,获取响应结果curl_setopt($curl, CURLOPT_HEADER, false);curl_setopt($curl, CURLOPT_NOBODY, false);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_PROXY, $proxy_host);curl_setopt($curl, CURLOPT_PROXYPORT, $proxy_port);$response = curl_exec($curl);if ($response === false){$response = false;break;}$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);if ($code != 200){$response = false;break;}} while (0);curl_close($curl);return $response;}$options = "u:p:s:";$opts = getopt ( $options );// 获得环境变量$proxy_host = getenv('PROXY_HOSTNAME');$proxy_port = getenv('PROXY_PORT');// 设置请求数据$appid = $opts['u'];$appkey = $opts['p'];$transcontent = $opts['s'];$params = array('app_id'=> "$appid",'source'=> 'zh','target'=> 'en','text' => "$transcontent",'time_stamp' => strval(time()),'nonce_str' => strval(rand()),'sign' => '',);$params['sign'] = getReqSign($params, $appkey);// 执行API调用$url = 'https://api./fcgi-bin/nlp/nlp_texttranslate';$response = doHttpPost($url, $params);echo $response;?>liumiaocn:php liumiao$


使用示例

现在所有东西都已就绪,让我们来期待一下,注意事前要做如下准备

export APP_ID=所使用的AppID值export APP_KEY=所使用的AppKey值export PROXY_HOSTNAME=192.168.31.242export PROXY_PORT=3128

常见问题

如果出现如下问题提示:

PHP Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value 2 will be used instead in

对应方法可根据其提示的那样,将示例代码中的true设定为2即可,也可以设定为false进行关闭。

设定代理服务器的方式:在代码中添加如下内容即可

curl_setopt($curl, CURLOPT_PROXY, "代理IP");curl_setopt($curl, CURLOPT_PROXYPORT, "代理端口");curl_setopt($curl, CURLOPT_PROXYUSERPWD, "代理用户:代理密码");

结果确认

liumiaocn:php liumiao$ php translate_through_api.php -u $APP_ID -p $APP_KEY -s "黄沙百战穿金甲"{"ret": 0,"msg": "ok","data": {"source_text": "黄沙百战穿金甲","target_text": "Serbia has worn his helmets and armour through a hundred wars."}}liumiaocn:php liumiao$

总结

使用php的curl模块可以很容易地设定代理服务器,这样即使服务在内网也可以通过代理进行穿透了。

参考内容

/doc/nlptrans.shtml

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。