127 lines
4.2 KiB
Java
127 lines
4.2 KiB
Java
package com.seeyon.apps.src_dingding.util;
|
||
|
||
import java.io.BufferedReader;
|
||
import java.io.FileNotFoundException;
|
||
import java.io.IOException;
|
||
import java.io.InputStream;
|
||
import java.io.InputStreamReader;
|
||
import java.io.OutputStream;
|
||
import java.net.HttpURLConnection;
|
||
import java.net.MalformedURLException;
|
||
import java.net.URL;
|
||
|
||
import com.alibaba.fastjson.JSON;
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.dingtalk.api.DefaultDingTalkClient;
|
||
import com.dingtalk.api.DingTalkClient;
|
||
import com.dingtalk.api.request.OapiGettokenRequest;
|
||
import com.dingtalk.api.response.OapiGettokenResponse;
|
||
import com.taobao.api.ApiException;
|
||
|
||
public class DingtalkUtil {
|
||
|
||
public String getToken() throws RuntimeException, ApiException, FileNotFoundException, IOException {
|
||
// DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
|
||
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
|
||
OapiGettokenRequest request = new OapiGettokenRequest();
|
||
request.setAppkey("dingtiefuskr6oycl5ah");
|
||
request.setAppsecret("5V_zIyAXU3Fx0yl20uxGotc3zIdrAXnKERat_ciEez0u3jqaVjosQhlflu5-83St");
|
||
request.setHttpMethod("GET");
|
||
OapiGettokenResponse response = client.execute(request);
|
||
JSONObject jsonObject = JSON.parseObject(response.getBody());
|
||
String token = jsonObject.getString("access_token");
|
||
return token;
|
||
}
|
||
|
||
|
||
/**
|
||
* 调用post接口
|
||
*
|
||
* @param str 调用接口传递的参数json
|
||
* @param urlStr 需要调用的url对应的参数文件中的编码
|
||
* @return
|
||
* @throws ApiException
|
||
* @throws RuntimeException
|
||
*/
|
||
public JSONObject doPost(String str, String urlStr) throws RuntimeException, ApiException {
|
||
HttpURLConnection connection = null;
|
||
InputStream is = null;
|
||
OutputStream os = null;
|
||
BufferedReader br = null;
|
||
String result = null;
|
||
try {
|
||
String token = getToken();
|
||
URL url = new URL(urlStr+"?access_token="+token);
|
||
// 通过远程url连接对象打开连接
|
||
connection = (HttpURLConnection) url.openConnection();
|
||
// 设置连接请求方式
|
||
connection.setRequestMethod("POST");
|
||
// 设置连接主机服务器超时时间:15000毫秒
|
||
connection.setConnectTimeout(15000);
|
||
// 设置读取主机服务器返回数据超时时间:60000毫秒
|
||
connection.setReadTimeout(60000);
|
||
|
||
// 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true
|
||
connection.setDoOutput(true);
|
||
// 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无
|
||
connection.setDoInput(true);
|
||
// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
|
||
// connection.setRequestProperty("access_token", token);
|
||
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
|
||
// 通过连接对象获取一个输出流
|
||
os = connection.getOutputStream();
|
||
// 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
|
||
if (!("".equals(str) || str == null)) {
|
||
os.write(str.getBytes("UTF-8"));
|
||
}
|
||
// 连接对象获取一个输入流,向远程读取
|
||
if (connection.getResponseCode() == 200) {
|
||
is = connection.getInputStream();
|
||
// 对输入流对象进行包装:charset根据工作项目组的要求来设置
|
||
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
|
||
|
||
StringBuffer sbf = new StringBuffer();
|
||
String temp = null;
|
||
// 循环遍历一行一行读取数据
|
||
while ((temp = br.readLine()) != null) {
|
||
sbf.append(temp);
|
||
sbf.append("\r\n");
|
||
}
|
||
result = sbf.toString();
|
||
}
|
||
} catch (MalformedURLException e) {
|
||
e.printStackTrace();
|
||
} catch (IOException e) {
|
||
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();
|
||
}
|
||
}
|
||
// 断开与远程地址url的连接
|
||
connection.disconnect();
|
||
}
|
||
JSONObject json = JSONObject.parseObject(result);
|
||
return json;
|
||
}
|
||
|
||
}
|