zoukankan      html  css  js  c++  java
  • Java调用第三方接口工具类(json、form)

    1、JSON值访问

    /**
     * 调用对方接口方法
     * @param path 对方或第三方提供的路径
     * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析
     */
    public static void interfaceUtil(String path,String data) {
        try {
            URL url = new URL(path);
            //打开和url之间的连接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            //设置请求的方法类型
            conn.setRequestMethod("POST");
            //设置请求的内容类型
            conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            //设置发送数据
            conn.setDoOutput(true);
            //设置接受数据
            conn.setDoInput(true);
            //发送数据,使用输出流
            OutputStream outputStream = conn.getOutputStream();
            outputStream.write(data.getBytes("UTF-8"));
            //获取URLConnection对象对应的输入流
            InputStream is = conn.getInputStream();
            
            //构造一个字符流缓存
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String str = "";
            while ((str = br.readLine()) != null) {
                System.out.println(str);
            }
            String response = byteArrayOutputStream.toString();
            System.out.println(response);
            //关闭流
            is.close();
            //断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。
            //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
            conn.disconnect();
            System.out.println("完整结束");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    2、form表单形式提交key-value值访问

    key-value值放进一个Map中

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.Map;
    import java.util.Map.Entry;
    import org.apache.log4j.Logger;
    
    /**
     * 调用对方接口方法
     * @author wxd
     */
    public class InterfaceUtil {
    
        private static final Logger logger = Logger.getLogger(InterfaceUtil.class);
        
        private static final int REQUEST_SUCCESS = 200;
        
        /**
         * 调用对方接口方法
         * @param path 对方或第三方提供的路径
         * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析
         */
        public static void postRequest(String path, Map<String,String> params) {
            OutputStream outputStream = null;
            InputStream is = null;
            HttpURLConnection conn = null;
            URL url = null;
            try {
                // 拼接请求参数  
                StringBuffer sb = new StringBuffer(); 
                String sbRlt = null;
                if (params != null) {  
                    for (Entry<String, String> e : params.entrySet()) {  
                        sb.append(e.getKey());  
                        sb.append("=");  
                        sb.append(e.getValue());  
                        sb.append("&");  
                    }  
                    sbRlt = sb.substring(0, sb.length() - 1);  
                }  
                url = new URL(path);
                //打开和url之间的连接
                conn = (HttpURLConnection) url.openConnection();
                
                //设置请求的方法类型
                conn.setRequestMethod("POST");
                //设置请求的内容类型
                conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
                //设置发送数据
                conn.setDoOutput(true);
                //设置接受数据
                conn.setDoInput(true);
                //发送数据,使用输出流
                outputStream = conn.getOutputStream();
                outputStream.write(sbRlt.getBytes("UTF-8"));
                //获取URLConnection对象对应的输入流
                is = conn.getInputStream();
                if(conn.getResponseCode() == REQUEST_SUCCESS) {
                    //构造一个字符流缓存
                    BufferedReader br = new BufferedReader(new InputStreamReader(is));
                    String str = "";
                    while ((str = br.readLine()) != null) {
                        logger.info(str);
                        System.out.println(str);
                    }
                }else {
                    logger.error("访问失败");
                    System.out.println("访问失败");
                }
            } catch (Exception e) {
                logger.error("访问失败");
                e.printStackTrace();
            } finally {
                if(is != null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(outputStream != null) {
                    try {
                        outputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(conn != null) {
                    conn.disconnect();
                }
            }
        }
        
    }
  • 相关阅读:
    软考解析:2014年上半年下午试题
    软考解析:2014年下半年下午试题
    软考解析:2015年下半年下午试卷
    软考解析:2015年上半年下午试卷
    怎样完善和推广自己的理论模型?
    怎样完善和推广自己的理论模型?
    Android开发——常见的内存泄漏以及解决方案(一)
    聊聊Android5.0中的水波纹效果
    JVM——自定义类加载器
    JVM——Java类加载机制总结
  • 原文地址:https://www.cnblogs.com/Donnnnnn/p/10119315.html
Copyright © 2011-2022 走看看