开发者

java实现给第三方接口推送加密数据

目录
  • Java如何调用接口
    • 1. 打开和url之间的连接   
    • 2. 设置通用的请求属性
    • 3. 设置是否向httpUrlConnection输出
    • 4. 断开连接
  • 具体代码
    • 总结

      java如何调用接口

      在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?

      很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。  

      URL url = new URL(path);

      1. 打开和url之间的连接   

      HttpURLConnection conn = (HttpURLConnection) url.openConnection();

      2. 设置通用的请求属性

         conn.setRequestProperty("accept", "*/*");
         conn.setRequestProperty("connection", "Keep-Alive");
         conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");

      3. 设置是否向httpUrlConnection输出

      设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。

         conn.setDoOutput(true);
         conn.setDoInput(true);

      4. 断开连接

      最好写上,disconnect是在底层tcp socket链接空闲时才切断。

      如果正在被其他线程使用就不切断。

      固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。

      写上disconnect后正常一些。

      conn.disconnect();

      具体代码

      package com.c;
      import java.io.BufferedReader;
      import java.io.InputStream;
      import java.io.InputStreamReader;
      import java.io.PrintWriter;
      import java.net.HttpURLConnection;
      import java.net.URL;
      /**
       * @author 
       */
      public class ToInterface {
          /**
           * 调用对方接口方法
           * @param path 对方或第三方提供的路径
           * @param data 向对方或第三方发送的数据,大多数情况下给对方发送jsON数据让对方解析
           */
          public static void interfaceUtil(String path,String data) {
              try {
                  URL url = new URLlLbOYFDcg(path);
                  //打开和url之间的连接
                  HttpURLConnection phpconn = (HttpURLConnection) url.openConnection();
                  PrintWriter out = null;
                  //请求方式
      			//conn.setRequestMethod("POST");
      			//设置通用的请求属性
                  conn.setRequestProperty("accept", "javascript*/*");
                  conn.setRequestProperty("connection", "Keep-Alive");
                  conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); 
                  //设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个
                  //最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,
                  //post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
                  conn.setDoOutput(true);
                  conn.setDoInput(true);
                  //获取URLConnection对象对应的输出流
                  out = new PrintWriter(conn.getOutputStream());
                  //发送请求参数即数据
                  这里data就是需要给第三方推送的具体JSON数据
                  out.print(data);
                  //缓冲数据
                  out.flush();
                  //获取URLConnection对象对应的输入流
                  InputStream is = conn.getInputStream();
                  //构造一个字符流缓存
                  BufferedReader br = new BufferedReader(new InputStreamReader(is));
                  String str = "";
                  while ((str = br.readLine()) != null) {
                      System.out.println(str);
                  }
                  //关闭流
                  is.close();
                  //断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使http://www.devze.com用就不切断。
                  //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上phpdisconnect后正常一些。
                  conn.disconnect();
                  System.out.println("完整结束");
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
          
          public static void main(String[] args) {
              interfaceUtil("http://api.map.baidu.com/telematics/v3/weather?location=嘉兴&output=json&ak=5slgyqGDENN7Sy7pw29IUvrZ", "");
      //        interfaceUtil("http://192.168.10.89:8080/eoffice-restful/resources/sys/oadata", "usercode=10012");
      //        interfaceUtil("http://192.168.10.89:8080/eoffice-restful/resources/sys/oaholiday",
      //                    "floor=first&year=2017&month=9&isLeader=N");
          }
      }
      

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜