• 接口


    **接口

    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);
          }

      }
    }

     

  • 相关阅读:
    执行预定义命令
    利用jemalloc优化mysql
    ssh增加密匙登录
    vsftpd增加ssl安全验证
    利用脚本获取mysql的tps,qps等状态信息
    innodb_buffer_pool_size 大小建议
    linux多核cpu下的负载查看
    DDoS deflate+iptables防御轻量级ddos攻击
    CentOS通过日志反查入侵
    shell读取文件每行,并执行命令
  • 原文地址:https://www.cnblogs.com/2714585551summer/p/14473056.html
Copyright © 2020-2023  润新知