/**
* 获取应用令牌
*
* @param map
* @return
* @throws IOException
*/
private InvoicingTokenResultVo getAppToken(Map<String, Object> map) throws IOException {
//1. 允许第三方系统通过 API 得到应用 Token。
String url= urlStr+"/ierp/api/getAppToken.do";
// 参数
InvoicingTokenVO invoicingTokenVO = new InvoicingTokenVO();
invoicingTokenVO.setAppId(appId);
invoicingTokenVO.setAppSecuret(appSecuret);
invoicingTokenVO.setAccountId(accountId);
invoicingTokenVO.setTenantid(tenantid);
invoicingTokenVO.setLanguage(language);
String accessToken = JSONObject.toJSONString(invoicingTokenVO);
// 发送请求
String resultJson = HttpUtil.doPostJsonTokeen(url, accessToken);
JSONObject jsonObject1 = JSONObject.parseObject(resultJson);
String data = jsonObject1.get("data").toString();
ObjectMapper mapper = new ObjectMapper();
InvoicingTokenResultVo invoicingTokenResultVo= mapper.readValue(data, InvoicingTokenResultVo.class);
return invoicingTokenResultVo;
}
/**
* 获取用户令牌
*
* @param tokenResultVo
* @return
* @throws IOException
*/
private InvoicingAccessTokenResultVO getAccessToken(InvoicingTokenResultVo tokenResultVo) throws IOException {
String url=urlStr+"/ierp/api/login.do";
InvoicingAccessTokenVO invoicingAccessTokenVO =new InvoicingAccessTokenVO();
invoicingAccessTokenVO.setUser(userName);
invoicingAccessTokenVO.setApptoken(tokenResultVo.getApp_token());
invoicingAccessTokenVO.setAccountId(accountId);
invoicingAccessTokenVO.setTenantid(tenantid);
invoicingAccessTokenVO.setUsertype(usertype);
invoicingAccessTokenVO.setLanguage(language);
String accessToken = JSONObject.toJSONString(invoicingAccessTokenVO);
// 发送请求
String resultJson = HttpUtil.doPostJsonTokeen(url, accessToken);
JSONObject jsonObject1 = JSONObject.parseObject(resultJson);
String data = jsonObject1.get("data").toString();
ObjectMapper mapper = new ObjectMapper();
InvoicingAccessTokenResultVO tokenResult= mapper.readValue(data, InvoicingAccessTokenResultVO.class);
return tokenResult;
}
/**
* http post请求,Content-Type为json
*
* @param httpUrl 请求地址
* @param param 请求参数(json)
* @return 返回结果
*/
public static String doPostJsonTokeen(String httpUrl, @Nullable String param) {
logger.info("发送post请求参数:{},地址:{}",param,httpUrl);
HttpURLConnection connection = null;
InputStream is = null;
OutputStream os = null;
BufferedReader br = null;
StringBuffer result = new StringBuffer();
try {
//创建连接对象
URL url = new URL(httpUrl);
//创建链接
connection = (HttpURLConnection) url.openConnection();
//设置请求方法
connection.setRequestMethod("POST");
//设置连接超时时间(毫秒)
connection.setConnectTimeout(15000);
//设置读取超时时间
connection.setReadTimeout(15000);
//DoOutput设置是否想httpUrlConnection输出,DoInput设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个值
//设置是否可读取
connection.setDoInput(true);
connection.setDoOutput(true);
//设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//拼装参数
if (!TextUtils.isBlank(param)) {
//设置参数
os = connection.getOutputStream();
//拼装参数
os.write(param.getBytes("UTF-8"));
}
//设置权限
//设置请求头
//开启连接
connection.connect();
//读取响应
if (connection.getResponseCode() == 200) {
is = connection.getInputStream();
if (null != is) {
br = new BufferedReader(new InputStreamReader(is, "utf-8"));
String temp = null;
while (null != (temp = br.readLine())) {
result.append(temp);
}
}
}
logger.info("返回的参数:{}",result);
} catch (IOException e) {
logger.info("请求错误--" + e.getMessage());
e.printStackTrace();
} finally {
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != os) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//关闭远程连接
connection.disconnect();
}
return result.toString();
}