最近项目中用到了模拟HTTP请求的部分,下面做了一个小整合,希望能给大家提供一定的参考,如果写的有问题,请帮忙指正,谢谢。
/** * <设置请求头及请求属性> * <功能详细描述> * @param method 请求对象 * @param contentType 内容类型 * @see [类、类#方法、类#成员] */ private static void setMethodParams(HttpMethodBase method, String contentType) { // 连接类型 method.addRequestHeader("Connection", "keep_live"); // 内容类型 if (!isEmpty(contentType)) { method.addRequestHeader("Content-Type", contentType); } // 设置POST请求超时时间 method.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, httpRequestTimeout); // 消息头里带上鉴权 method.addRequestHeader("Authorization", authorization); } /** * <使用POST方式提交HTTP请求> * <功能详细描述> * @param address 请求地址 * @param entity 请求参数 * @return 返回请求结果 * @throws HttpException * @throws IOException * @see [类、类#方法、类#成员] */ public static String sendPostRequest(String address, RequestEntity entity) throws HttpException, IOException { // 如果请求地址为空直接退出请求 logger.info("Request Address Is " + address); if (isEmpty(address)) { return ""; } // 存储服务器的响应消息 String responseMsg = ""; // 客户端对象 HttpClient client = new HttpClient(); // 设置连接超时时间 client.getHttpConnectionManager().getParams().setConnectionTimeout(httpConnectionTimeout); // POST对象 PostMethod method = new PostMethod(address); // 设置请求头及属性 setMethodParams(method, null); // 参数对象 if (null != entity) { method.setRequestEntity(entity); } // 执行的结果 client.executeMethod(method); responseMsg = method.getResponseBodyAsString(); logger.info("Response Message Is " + responseMsg); // 释放客户端连接 method.releaseConnection(); // 返回响应结果 return responseMsg; } /** * <使用POST方式提交HTTP请求> * <包含多个请求参数时使用该方法> * @param address 请求地址 * @param parts 多个请求参数集合 * @return 返回请求结果 * @throws HttpException * @throws IOException * @see [类、类#方法、类#成员] */ public static String sendPostRequest(String address, NameValuePair[] values) throws HttpException, IOException { // 如果请求地址为空直接退出请求 logger.info("Request Address Is " + address); if (isEmpty(address)) { return ""; } // 存储服务器的响应消息 String responseMsg = ""; // 客户端对象 HttpClient client = new HttpClient(); // 设置连接超时时间 client.getHttpConnectionManager().getParams().setConnectionTimeout(httpConnectionTimeout); // POST对象 PostMethod method = new PostMethod(address); // 设置请求头及属性 setMethodParams(method, "application/x-www-form-urlencoded"); // 参数对象 if (null != values) { method.setRequestBody(values); } // 执行的结果 client.executeMethod(method); responseMsg = method.getResponseBodyAsString(); logger.info("Response Message Is " + responseMsg); // 释放客户端连接 method.releaseConnection(); // 返回响应结果 return responseMsg; } /** * <使用POST方式提交HTTP请求> * <多个请求参数包含文件时使用该方法> * @param address 请求地址 * @param parts 多个请求参数集合 * @return 返回请求结果 * @throws HttpException * @throws IOException * @see [类、类#方法、类#成员] */ public static String sendPostRequest(String address, Part[] parts) throws HttpException, IOException { // 如果请求地址为空直接退出请求 logger.info("Request Address Is " + address); if (isEmpty(address)) { return ""; } // 存储服务器的响应消息 String responseMsg = ""; // 客户端对象 HttpClient client = new HttpClient(); // 设置连接超时时间 client.getHttpConnectionManager().getParams().setConnectionTimeout(httpConnectionTimeout); // POST对象 PostMethod method = new PostMethod(address); // 设置请求头及属性 setMethodParams(method, null); // 参数对象 if (null != parts) { method.setRequestEntity(new MultipartRequestEntity(parts, method.getParams())); } // 执行的结果 client.executeMethod(method); responseMsg = method.getResponseBodyAsString(); logger.info("Response Message Is " + responseMsg); // 释放客户端连接 method.releaseConnection(); // 返回响应结果 return responseMsg; } /** * <使用POST方式提交HTTP请求> * <包含多个请求参数时使用该方法> * @param address 请求地址 * @param params 参数字符串 * @return 返回请求结果 * @throws HttpException * @throws IOException * @see [类、类#方法、类#成员] */ public static String sendPostRequest(String address, String params) throws HttpException, IOException { // 如果请求地址为空直接退出请求 logger.info("Request Address Is " + address); if (isEmpty(address)) { return ""; } // 参数对象 if (null != params) { address = address + "?" + params; } // 存储服务器的响应消息 String responseMsg = ""; // 客户端对象 HttpClient client = new HttpClient(); // 设置连接超时时间 client.getHttpConnectionManager().getParams().setConnectionTimeout(httpConnectionTimeout); // POST对象 PostMethod method = new PostMethod(address); // 设置请求头及属性 setMethodParams(method, "application/x-www-form-urlencoded"); // 执行的结果 client.executeMethod(method); responseMsg = method.getResponseBodyAsString(); logger.info("Response Message Is " + responseMsg); // 释放客户端连接 method.releaseConnection(); // 返回响应结果 return responseMsg; } /** * <使用GET方式提交HTTP请求> * <功能详细描述> * @param address 请求地址 * @param params 请求参数 * @return 返回请求结果 * @throws HttpException * @throws IOException * @see [类、类#方法、类#成员] */ public static String sendGetRequest(String address, String params) throws HttpException, IOException { // 如果请求地址为空直接退出请求 logger.info("Request Address Is " + address); if (isEmpty(address)) { return ""; } // 存储服务器的响应消息 String responseMsg = ""; // 客户端对象 HttpClient client = new HttpClient(); // 设置连接超时时间 client.getHttpConnectionManager().getParams().setConnectionTimeout(httpConnectionTimeout); // GET对象 GetMethod method = null; if (!isEmpty(params)) { method = new GetMethod(address + "?" + params); } else { method = new GetMethod(address); } // 设置请求头及属性 setMethodParams(method, null); // 执行的结果 client.executeMethod(method); responseMsg = method.getResponseBodyAsString(); logger.info("Response Message Is " + responseMsg); // 释放客户端连接 method.releaseConnection(); // 返回响应结果 return responseMsg; } /** * <使用GET方式提交HTTP请求> * <功能详细描述> * @param address 请求地址 * @param params 请求参数 * @return 返回请求结果 * @throws HttpException * @throws IOException * @see [类、类#方法、类#成员] */ public static String[] sendGetRequest(String[] address, String params) throws HttpException, IOException { // 如果请求地址为空直接退出请求 logger.info("Request Address Is " + address); if (null == address) { return null; } // 存储响应结果 String[] responseMsg = new String[address.length]; // 客户端对象 HttpClient client = new HttpClient(); // 设置连接超时时间 client.getHttpConnectionManager().getParams().setConnectionTimeout(httpConnectionTimeout); // GET对象 GetMethod method = null; for (int i = 0; i < address.length; i++) { if (!isEmpty(params)) { method = new GetMethod(address[i] + "?" + params); } else { method = new GetMethod(address[i]); } // 设置请求头及属性 setMethodParams(method, null); // 执行的结果 client.executeMethod(method); String result = method.getResponseBodyAsString(); responseMsg[i] = result; logger.info("Response Message Is " + result); } // 释放客户端连接 method.releaseConnection(); // 返回响应结果 return responseMsg; }
注:authorization字符串的计算方式如下:
/** * <获取xml文件中的值赋给全局变量> * <功能详细描述> * @see [类、类#方法、类#成员] */ public static void readConfigXml() { try { // 获取资源流 InputStream in = Global.class.getResourceAsStream("/config.xml"); // 获取根节点 SAXReader sax = new SAXReader(); sax.setEncoding("UTF-8"); Document doc = sax.read(in); Element root = doc.getRootElement(); // 路由器用户名 apName = root.elementText("apName"); // 路由器密码 apPwd = root.elementText("apPwd"); // 链接超时时间 httpConnectionTimeout = Integer.parseInt(root.elementText("httpConnectionTimeout")) * 1000; // 请求超时时间 httpRequestTimeout = Integer.parseInt(root.elementText("httpRequestTimeout")) * 1000; // 检查次数 checkCount = Integer.parseInt(root.elementText("checkCount")); // 鉴权字符串 authorization = "Basic " + DatatypeConverter.printBase64Binary((apName + ":" + apPwd).getBytes("UTF-8")); } catch (Exception e) { logger.error(LOG_EXCEPTION_NAME, e); } }
相关推荐
.NET CORE HttpClient 的使用方法 .NET CORE 中的 HttpClient 是一个非常重要的组件,它提供了一个强大且灵活的方式来发送 HTTP 请求。然而,在使用 HttpClient 时,我们需要注意一些重要的配置和使用方法,以避免...
在这个场景下,"使用HttpClient调试android接口-通用方法"的标题表明我们将讨论如何使用HttpClient来调试Android应用中的API接口。下面,我们将深入探讨HttpClient的基础知识、调试技巧以及如何封装通用方法。 1. *...
本教程将基于标题"HTTPClient简单使用"和提供的文件`HttpService`、`HttpClient`来阐述HTTPClient的基本使用方法。 1. **HTTPClient简介** HTTPClient是Apache的 HttpClient库,它为Java开发者提供了全面的HTTP...
标题中的“httpclient测试请求方法”指的是使用Apache HttpClient库进行HTTP请求的方法。HttpClient是一个功能强大的客户端编程工具包,它允许开发者构建复杂的HTTP客户端应用程序。在本文中,我们将深入探讨...
本篇文章将详细讲解HttpClient的使用方法,包括如何搭建环境、所需的jar包、基本应用以及实例演示,旨在帮助初级学员快速掌握HttpClient的基础操作。 一、环境搭建 在使用HttpClient之前,首先需要在项目中引入...
简单使用方法: public static void main(String[] args) { // String str1 = "http://dev.d-smart.cn/Login"; // http协议路径 String str1 = ""; HttpClient httpClient = new HttpClient...
在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...
### httpclient使用教程 #### HttpClient概述与重要性 ...为了解决这一问题,Apache ...此教程不仅介绍了HttpClient的基本使用方法,还强调了资源管理和异常处理的重要性,是Java开发者处理HTTP通信不可或缺的技能之一。
同时,注意HttpClient库已经不再更新,对于新的Java项目,推荐使用现代化的HTTP客户端库,如Apache HttpClient的后继者Apache HTTP Components HttpClient 4.x系列,或者使用Java标准库的`java.net.http.HttpClient`...
httpclient的介绍以及基本方法整理
它能够处理各种HTTP方法,如GET、POST、PUT、DELETE等,并支持HTTP头的设置和处理。 4. **连接管理**:HttpClient提供了`PoolingHttpClientConnectionManager`,用于管理HTTP连接池,可以有效地复用连接,提高性能...
本篇文章将详细介绍HTTPClient 4.0的使用方法,包括其核心概念、基本操作和示例代码。 一、核心概念 1. HttpClient实例:HttpClient对象是执行HTTP请求的核心,负责建立连接、发送请求和接收响应。通过`...
httpclient是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,本文档提供使用httpclient的使用方法
在Java中,使用HttpClient可以方便地发送HTTP请求并接收响应,处理各种复杂的网络通信场景。 封装HttpClient的主要目的是提高代码的可读性和可维护性。通过创建一个简单的接口或类,开发者可以隐藏底层复杂的配置和...
首先,HttpClient库提供了一套完整的API,允许开发者构建复杂的HTTP请求,包括GET、POST、PUT等HTTP方法,同时支持连接管理、重试策略、超时设置等高级特性。在Java项目中,HttpClient通常被用来替代内置的`java.net...
HttpClientHelper 对这个类进行了封装,使得开发者无需直接与HttpClient接口打交道,而是通过更简洁、易用的方法调用来实现网络通信。这提高了代码的可读性和可维护性。 单例模式是软件设计模式的一种,确保一个类...