HTTPClient的方式请求外部接口

HTTPClient的方式请求外部接口

POST请求,Map入参

public static String post(String url, Map<String, String> paramsMap) {
        CloseableHttpClient client = HttpClients.createDefault();
        String responseText = "";
        CloseableHttpResponse response = null;
        try {
            HttpPost method = new HttpPost(url);
            if (paramsMap != null) {
                List<NameValuePair> paramList = new ArrayList<>();
                for (Map.Entry<String, String> param : paramsMap.entrySet()) {
                    NameValuePair pair = new BasicNameValuePair(param.getKey(), param.getValue());
                    paramList.add(pair);
                }
                method.setEntity(new UrlEncodedFormEntity(paramList, ENCODING));
            }
            response = client.execute(method);
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                responseText = EntityUtils.toString(entity);
            }
        } catch (Exception e) {
            log.error("http post request failed", e);
            throw new BusinessException("http post request failed", e);
        } finally {
            try {
                assert response != null;
                response.close();
            } catch (Exception e) {
                log.error("response close failed", e);
            }
        }
        return responseText;
    }

POST请求,JsonString 入参

public static String jsonPost(String url, String params) {
        CloseableHttpClient client = HttpClients.createDefault();
        String responseText = "";
        CloseableHttpResponse response = null;
        try {
            HttpPost method = new HttpPost(url);
            method.addHeader("Content-Type", "application/json;charset=UTF-8");
            method.setHeader("Accept", "application/json");
            StringEntity stringEntity = new StringEntity(params, Charset.forName("UTF-8"));
            stringEntity.setContentType("text/json");
            method.setEntity(stringEntity);
            response = client.execute(method);
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                responseText = EntityUtils.toString(entity);
            }
        } catch (Exception e) {
            log.error("http post request failed", e);
            throw new BusinessException("http post request failed", e);
        } finally {
            try {
                assert response != null;
                response.close();
            } catch (Exception e) {
                log.error("response close failed", e);
            }
        }
        return responseText;
    }

GET请求方式

public static String get(String url, Map<String, String> paramsMap) {
        CloseableHttpClient client = HttpClients.createDefault();
        String responseText = "";
        CloseableHttpResponse response = null;
        try {
            StringBuilder getUrl = new StringBuilder(url + "?");
            if (paramsMap != null) {
                for (Map.Entry<String, String> param : paramsMap.entrySet()) {
                    getUrl.append(param.getKey()).append("=").append(URLEncoder.encode(param.getValue(), ENCODING)).append("&");
                }
            }
            HttpGet method = new HttpGet(getUrl.toString());
            response = client.execute(method);
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                responseText = EntityUtils.toString(entity);
            }
        } catch (Exception e) {
            log.error("http get request failed", e);
            throw new BusinessException("http get request failed", e);
        } finally {
            try {
                if (response != null) {
                    response.close();
                }
            } catch (Exception e) {
                 log.error("",e);
            }
        }
        return responseText;
    }

 

### 回答1: 在Java中,你可以使用以下几种方式请求外部接口: 1. 使用 `java.net` 包中的类,如 `URL` 和 `HttpURLConnection`。你可以使用这些类来发送 HTTP 请求并获取响应。 2. 使用第三方库,如 Apache HttpClient、OkHttp 或 Retrofit。这些库都可以帮助你简化请求外部接口的流程,并提供了更丰富的功能。 下面是使用 `java.net` 包的示例代码: ``` URL url = new URL("http://www.example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = connection.getInputStream(); // 读取响应内容 } else { // 处理错误 } ``` 如果你使用的是第三方库,可能会有所不同,但大体流程是类似的。 ### 回答2: 在Java请求外部接口可以使用Java提供的相关库和工具来实现。主要有以下几种方式: 1. 使用HttpURLConnection类:Java提供了HttpURLConnection类来发送HTTP请求,可以通过该类发送GET、POST请求,获取接口返回的数据。可以使用该类来建立连接、设置请求方法、添加请求头、发送请求、获取响应等。 2. 使用HttpClient类:HttpClient是Apache提供的一个开源工具包,用于发送HTTP请求。可以使用该工具包发送GET、POST请求,设置请求参数、请求头等,并获取接口返回的数据。 3. 使用第三方库OkHttp:OkHttp是Square公司开发的一个优秀的HTTP客户端库。它简化了与网站的通信过程,提供了易于使用的API来处理HTTP请求和响应。可以使用OkHttp发送GET、POST请求,设置请求参数、请求头等,并获取接口返回的数据。 4. 使用RestTemplate类:RestTemplate是Spring框架中提供的一个用于访问Rest服务的模板类,它封装了HTTP请求的处理逻辑。可以使用RestTemplate发送GET、POST请求,并通过设置请求参数、请求头等来访问外部接口。 以上是几种常见的在Java请求外部接口方式。根据项目的需求和开发的场景,可以选择合适的方式来实现数据的请求和处理。 ### 回答3: Java请求外部接口方式有多种。其中比较常见的方式是使用Java的网络编程库来发送HTTP请求。 首先,需要引入Java的网络编程相关的库,如Java自带的URLConnection类或者第三方库如HttpClient等。 然后,可以使用以下步骤来请求外部接口: 1. 构建URL对象:使用接口的URL地址创建一个URL对象。 2. 打开连接:通过URL对象的openConnection方法打开一个连接对象,得到URLConnection实例。 3. 设置请求属性:如果需要,可以设置一些请求头信息,如User-Agent、请求方法、超时时间等。 4. 发送请求:通过调用URLConnection对象的connect()方法发送请求。 5. 获取响应:可以通过getResponseCode()方法获取响应的状态码,通过getInputStream()方法获取响应的输入流,从而获取返回的数据。 6. 处理响应:根据接口的返回格式进行解析和处理,可以使用Java内置的JSON库或第三方库让数据解析更加方便。 7. 关闭连接:最后,一定要关闭连接,可以通过调用URLConnection对象的disconnect()方法来关闭连接。 总之,使用Java请求外部接口需要通过网络编程库构建URL对象,设置请求方式请求头,发送请求并获取响应,最后对响应进行处理和关闭连接。具体的实现和处理方式会根据接口的具体要求和返回格式而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值