java实现小i机器人api接口调用示例
package com.weixin.util;
import java.io.IOException;
import java.util.Random;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.lang.StringUtils;
public class XiaoI {
private final static String APP_KEY = "*****";
private final static String APP_SECRET = "****";
public String Tess(String key, String names) {
String realm = "xiaoi.com";
String method = "POST";
String uri = "/robot/ask.do";
byte[] b = new byte[20];
new Random().nextBytes(b);
String nonce = new String(Hex.encodeHex(b));
String HA1 = DigestUtils.shaHex(StringUtils.join(new String[] {
APP_KEY, realm, APP_SECRET }, ":"));
String HA2 = DigestUtils.shaHex(StringUtils.join(new String[] { method,
uri }, ":"));
String sign = DigestUtils.shaHex(StringUtils.join(new String[] { HA1,
nonce, HA2 }, ":"));
String str = null;
HttpClient hc = new HttpClient();
PostMethod pm = new PostMethod("http://nlp.xiaoi.com/robot/ask.do");
pm.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,
"utf-8");
pm.addRequestHeader("X-Auth", "app_key=\"7HHk65oE2Ngy\", nonce=\""
+ nonce + "\", signature=\"" + sign + "\"");
pm.setParameter("platform", "weixin");
pm.setParameter("type", "0");
pm.setParameter("userId", names);
pm.setParameter("question", key);
int re_code;
try {
re_code = hc.executeMethod(pm);
if (re_code == 200) {
str = pm.getResponseBodyAsString();
}
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
}
相关文章
Mybatis-Plus默认主键策略导致自动生成19位长度主键id的坑
这篇文章主要介绍了Mybatis-Plus默认主键策略导致自动生成19位长度主键id的坑,本文一步步给大家分享解决方法,给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-12-12
java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)
打印日志的在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别、打印形式和日志的输出路径,下面看一个示例吧2014-01-01
SpringBoot中注解@ConfigurationProperties与@Value的区别与使用详解
本文主要介绍了SpringBoot中注解@ConfigurationProperties与@Value的区别与使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-09-09


最新评论