天天看点

Java 调用get方法拼接进行接口调用

1、这种get方法调用接口首先需要导入JAR包

Java 调用get方法拼接进行接口调用

2、书写工具类,网上有很多这种工具类

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

/**
 * Description:http请求工具类<br/>
 * Copyright (c) , 2017, Jansonxu <br/>
 * This program is protected by copyright laws. <br/>
 * Program Name:HttpUtil<br/>
 */
public class HttpUtil {
     private static final CloseableHttpClient httpclient = HttpClients.createDefault();

        /**
         * 发送HttpGet请求
         * @param url
         * @return
         */
        public static String sendGet(String url) {

            HttpGet httpget = new HttpGet(url);
            CloseableHttpResponse response = null;
            try {
                response = httpclient.execute(httpget);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            String result = null;
            try {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    result = EntityUtils.toString(entity);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }

        /**
         * 发送HttpPost请求,参数为map
         * @param url
         * @param map
         * @return
         */
        public static String sendPost(String url, Map<String, String> map,HttpServletRequest request) {
            List<NameValuePair> formparams = new ArrayList<NameValuePair>();
            for (Map.Entry<String, String> entry : map.entrySet()) {
                formparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
            }
            //HttpServletRequest request = ServletActionContext. getRequest();
            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, Consts.UTF_8);
            HttpPost httppost = new HttpPost(url);
            httppost.setEntity(entity);
            CloseableHttpResponse response = null;
            String cookie = request.getHeader("Cookie");
            try {
                httppost.setHeader("cookie",cookie);
                response = httpclient.execute(httppost);
            } catch (IOException e) {
                e.printStackTrace();
            }
            HttpEntity entity1 = response.getEntity();

            String result = null;
            try {
                result = EntityUtils.toString(entity1);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }



        /**
         * 发送不带参数的HttpPost请求
         * @param url
         * @return
         */
        public static String sendPost(String url) {
            HttpPost httppost = new HttpPost(url);
            CloseableHttpResponse response = null;
            try {
                response = httpclient.execute(httppost);
            } catch (IOException e) {
                e.printStackTrace();
            }
            HttpEntity entity = response.getEntity();
            String result = null;
            try {
                result = EntityUtils.toString(entity);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }


}
           

3、工具类写完之后便进入进口的调用,我的接口主要是传入Json格式的数据作为参数,同时传回的数据同样为Json

/**
         * 定义requestString 请求参数
         */
        String url = URLEncoder
                .encode("{\"LoginInfo\":{\"Password\":\"****\",\"UserName\":\"****\"},\"RequestData\":{\"DeviceCode\":\"****\",\"StationCode\":null,\"EndTime\":\""
                        + EndTime + "\",\"StartTime\":\"" + StartTime
                        + "\",\"PageInfo\":{\"PageIndex\":"+pn+",\"PageSize\":10}}}", "utf-8");
        /**
         * 替换掉识别不出来的字符
         */
        url = url.replaceAll("%3A", ":").replaceAll("%2C", ",").replaceAll("%26", "&");
        String util = HttpUtil
                .sendGet("你的接口地址" + url);
        JSONObject json = JSONObject.fromObject(util);
        response.setHeader("Content-type", "text/html;charset=utf-8");
        response.setContentType("text/html;charset=utf-8");