接口

**接口

1:前期准备工作

因飞书接口与项目在对接时如何定位对应的用户 是通过工号确认的。因此系统会在 添加 飞书工号字段(jobnumber) 然后将提供的人员工号初始化进去。

初始化方法(手动执行):

1.1:新建表 通过姓名连接起来 数据导进去 update

2:单点登录

Function audit(){
                                    获取token:校验存在不存在返回信息;
                                    获取到token 根据fs_enable 配置开关 获取接口是否开启 校验存在不存在返回信息;
                      Object info=               Getjobmuber(token)// 根据接口获取工号 校验存在不存在返回信息
                                Map userinfo = getuserinfore(info.get(“number”)) //根据工号获取人员信息 校验存在不存在返回信息
                                信息存在;
                                调用登录系统方法 login(userinfo.get(“username”),userinfo.get(“password”))
                                                   
}
                // 根据接口获取工号方法
                  Function Getjobmuber(token){
                                      //调用接口
                                    Return fsinterface(token);
}
                  Function fsinterface(token){
// http restful的发送方法
                                        Object info = RestUtil.get(fs_url,token);
                                        Return info

}
                          Function getuserinfore(jobnumber){
                          Map userinfo = userservice.getuserinfo(jobnumber);
            Return userinfo
}

3:消息推送

实现方法:

配置个监听类 在建立一个配置表

通过反射的方法 拿到每个处理类去处理对应的数据

SpringUtil.getBean

4:接口


import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.springframework.http.*;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.Map;


public class RestUtil {
  /**
    * 以form表单形式发送请求
    *
    * @param reqData
    */
  public static ResultMsg<Object> postForm(Map<String, Object> reqData, String targeturl, String username, String password) {
      ResponseEntity<String> response;
      try {
          HttpHeaders headers = new HttpHeaders();
          // 以表单的方式提交
          headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
          //加入basicAuth账号密码认证
          headers.setBasicAuth(username, password, StandardCharsets.UTF_8);
          //将请求头部和参数合成一个请求
          MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
          for (String key : reqData.keySet()) {
              params.add(key, reqData.get(key));
          }
          HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
          //执行HTTP请求,将返回的结构使用String类格式化
          RestTemplate restTemplate = (RestTemplate) SpringUtil.getBean("restTemplate");
          restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
          response = restTemplate.postForEntity(targeturl, requestEntity, String.class);
      } catch (HttpClientErrorException e) {
          response = new ResponseEntity<>(new String(e.getResponseBodyAsByteArray(), StandardCharsets.UTF_8), e.getStatusCode());
          e.printStackTrace();
      } catch (Exception e) {
          response = new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
          e.printStackTrace();
      }
      if (response.getStatusCode().is2xxSuccessful()) {
          String body = response.getBody();
          JSONObject jsonObject = JSONObject.parseObject(body);
          return ResultMsgHelper.buildResult(jsonObject.getInteger("code"), jsonObject.getString("msg"), jsonObject.get("data"));
      } else {
          return ResultMsgHelper.error(response.getBody());
      }
  }

  /**
    * 以json形式调用网动接口
    *
    * @param json
    */
  public static ResultMsg<Object> postJson(String json, String targeturl, String username, String password) {
      HttpHeaders headers = new HttpHeaders();
      headers.add("Content-Type", "application/json;charset=UTF-8");
      //加入basicAuth账号密码认证
      headers.setBasicAuth(username, password, StandardCharsets.UTF_8);
      HttpEntity<String> httpEntity = new HttpEntity<>(json, headers);
      ResponseEntity<String> response;
      try {
          RestTemplate restTemplate = (RestTemplate) SpringUtil.getBean("restTemplate");
          restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
          response = restTemplate.postForEntity(targeturl, httpEntity, String.class);
      } catch (HttpClientErrorException e) {
          response = new ResponseEntity<>(new String(e.getResponseBodyAsByteArray(), StandardCharsets.UTF_8), e.getStatusCode());
          e.printStackTrace();
      } catch (Exception e) {
          response = new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
          e.printStackTrace();
      }
      if (response.getStatusCode().is2xxSuccessful()) {
          String body = response.getBody();
          JSONObject jsonObject = JSONObject.parseObject(body);
          return ResultMsgHelper.buildResult(jsonObject.getInteger("code"), jsonObject.getString("msg"), jsonObject.get("data"));
      } else if (response.getStatusCode() == HttpStatus.FORBIDDEN) {
          return ResultMsgHelper.error("您没有授权");
      } else {
          return ResultMsgHelper.error(response.getBody());
      }
  }


  /**
    * 以json形式调用接口
    * post方式
    * @param json
    */
  public static String post(String json, String targeturl) {
      HttpHeaders headers = new HttpHeaders();
      headers.add("Content-Type", "application/json;charset=UTF-8");
      HttpEntity<String> httpEntity = new HttpEntity<>(json, headers);
      ResponseEntity<String> response;
      try {
          RestTemplate restTemplate = (RestTemplate) SpringUtil.getBean("restTemplate");
          restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
          response = restTemplate.postForEntity(targeturl, httpEntity, String.class);
      } catch (HttpClientErrorException e) {
          response = new ResponseEntity<>(new String(e.getResponseBodyAsByteArray(), StandardCharsets.UTF_8), e.getStatusCode());
          e.printStackTrace();
      } catch (Exception e) {
          response = new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
          e.printStackTrace();
      }
      if (response.getStatusCode().is2xxSuccessful()) {
          String body = response.getBody();
          JSONObject jsonObject = JSONObject.parseObject(body);
          return jsonObject.toJSONString();
      } else {//接口返回失败
          return response.getStatusCode().toString();
      }
  }

  /**
    *
    * get方式
    */
  public static String get(String targeturl) {
      HttpHeaders headers = new HttpHeaders();
      headers.add("Content-Type", "application/json;charset=UTF-8");
      ResponseEntity<String> response;
      try {
          RestTemplate restTemplate = (RestTemplate) SpringUtil.getBean("restTemplate");
          restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
          response = restTemplate.getForEntity(targeturl, String.class);
      } catch (HttpClientErrorException e) {
          response = new ResponseEntity<>(new String(e.getResponseBodyAsByteArray(), StandardCharsets.UTF_8), e.getStatusCode());
          e.printStackTrace();
      } catch (Exception e) {
          response = new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
          e.printStackTrace();
      }
      if (response.getStatusCode().is2xxSuccessful()) {
          String body = response.getBody();
          //JSONObject jsonObject = JSONObject.parseObject(body);
          return body;
      } else {//接口返回失败
          return null;
      }
  }

  public static String requestBodyPost(String requestBody,String jsseuri) {
      //请求的body信息
      HttpClient httpClient = new DefaultHttpClient();
      HttpPost httpPost = new HttpPost(jsseuri);
      //添加header
      httpPost.addHeader("X-Easymi-AppCode", "AppCode");
      httpPost.addHeader("X-Easymi-UserName", "UserName");
      //添加body
      ByteArrayEntity entity = null;
      try {
          entity = new ByteArrayEntity(requestBody.getBytes("UTF-8"));
          entity.setContentType("application/json");
      } catch (UnsupportedEncodingException e) {
          //logger.error("向服务器承保接口发起http请求,封装请求body时出现异常", e);
          throw new RuntimeException("向服务器承保接口发起http请求,封装请求body时出现异常", e);
      }
      httpPost.setEntity(entity);
      //执行post请求
      HttpResponse response = null;
      try {
          response = httpClient.execute(httpPost);
          String rs = EntityUtils.toString(response.getEntity(),"utf-8");
          return rs;
      } catch (ClientProtocolException e) {

          throw new RuntimeException("提交给服务器的请求,不符合HTTP协议", e);
      } catch (IOException e) {

          throw new RuntimeException("向服务器承保接口发起http请求,执行post请求异常", e);
      }

  }
}

 

posted @ 2021-03-03 10:39  暖暖要坚持  阅读(71)  评论(0编辑  收藏  举报