/** * <p> * httpClient的get请求方式 * </p> * * @param url * = "https://www.99bill.com/webapp/receiveDrawbackAction.do"; * @param charset * = ="utf-8"; * @return * @throws Exception */ public static String sentGet(String url, String charset) throws Exception { HttpClient client = new HttpClient(); GetMethod method1 = new GetMethod(url); if (null == url || !url.startsWith("http")) { throw new Exception("请求地址格式不对"); } // 设置请求的编码方式 if (null != charset) { method1.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=" + charset); } else { method1.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=" + "utf-8"); } int statusCode = client.executeMethod(method1); if (statusCode != HttpStatus.SC_OK) { // 打印服务器返回的状态 System.out.println("Method failed: " + method1.getStatusLine()); } // 返回响应消息 byte[] responseBody = method1.getResponseBodyAsString().getBytes( method1.getResponseCharSet()); // 在返回响应消息使用编码(utf-8或gb2312) String response = new String(responseBody, "utf-8"); // 释放连接 method1.releaseConnection(); return response; } /** * <p> * httpClient的get请求方式2 * </p> * * @param url * = "https://www.99bill.com/webapp/receiveDrawbackAction.do"; * @param charset * = ="utf-8"; * @return * @throws Exception */ public static String sendGet2(String url, String charset) throws Exception { /* * 使用 GetMethod 来访问一个 URL 对应的网页,实现步骤: 1:生成一个 HttpClinet 对象并设置相应的参数。 * 2:生成一个 GetMethod 对象并设置响应的参数。 3:用 HttpClinet 生成的对象来执行 GetMethod 生成的Get * 方法。 4:处理响应状态码。 5:若响应正常,处理 HTTP 响应内容。 6:释放连接。 */ /* 1 生成 HttpClinet 对象并设置参数 */ HttpClient httpClient = new HttpClient(); // 设置 Http 连接超时为5秒 httpClient.getHttpConnectionManager().getParams() .setConnectionTimeout(5000); /* 2 生成 GetMethod 对象并设置参数 */ GetMethod getMethod = new GetMethod(url); // 设置 get 请求超时为 5 秒 getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000); // 设置请求重试处理,用的是默认的重试处理:请求三次 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); String response = ""; /* 3 执行 HTTP GET 请求 */ try { int statusCode = httpClient.executeMethod(getMethod); /* 4 判断访问的状态码 */ if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: " + getMethod.getStatusLine()); } /* 5 处理 HTTP 响应内容 */ // HTTP响应头部信息,这里简单打印 Header[] headers = getMethod.getResponseHeaders(); for (Header h : headers) System.out .println(h.getName() + "------------ " + h.getValue()); // 读取 HTTP 响应内容,这里简单打印网页内容 byte[] responseBody = getMethod.getResponseBody(); // 读取为字节数组 response = new String(responseBody, charset); // 读取为 InputStream,在网页内容数据量大时候推荐使用 // InputStream response = getMethod.getResponseBodyAsStream(); } catch (HttpException e) { // 发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println("Please check your provided http address!"); e.printStackTrace(); } catch (IOException e) { // 发生网络异常 e.printStackTrace(); } finally { /* 6 .释放连接 */ getMethod.releaseConnection(); } return response; } /** * <p> * 执行一个HTTP POST请求,返回请求响应的HTML * </p> * * @param url * 请求的URL地址 * @param params * 请求的查询参数,可以为null * @param charset * 字符集 * @param pretty * 是否美化 * @return 返回请求响应的HTML */ public static String sendPost(String url, Map<String, String> params, String charset, boolean pretty) { StringBuffer response = new StringBuffer(); HttpClient client = new HttpClient(); HttpMethod method = new PostMethod(url); // 设置Http Post数据 if (params != null) { HttpMethodParams p = new HttpMethodParams(); for (Map.Entry<String, String> entry : params.entrySet()) { p.setParameter(entry.getKey(), entry.getValue()); } method.setParams(p); } try { client.executeMethod(method); if (method.getStatusCode() == HttpStatus.SC_OK) { // 读取为 InputStream,在网页内容数据量大时候推荐使用 BufferedReader reader = new BufferedReader( new InputStreamReader(method.getResponseBodyAsStream(), charset)); String line; while ((line = reader.readLine()) != null) { if (pretty) response.append(line).append( System.getProperty("line.separator")); else response.append(line); } reader.close(); } } catch (IOException e) { System.out.println("执行HTTP Post请求" + url + "时,发生异常!"); e.printStackTrace(); } finally { method.releaseConnection(); } return response.toString(); }
转载地址:http://blog.csdn.net/zheng2008hua/article/details/6054067
相关推荐
httpclient get/post请求工具类(map参数封装),方便调用
本文将详细讲解如何在MFC中利用HttpClient进行GET和POST操作。 首先,我们需要理解HTTP协议的基本概念。HTTP(超文本传输协议)是一种应用层协议,用于在Web上交换各类数据。GET和POST是HTTP请求中最常见的两种方法...
它提供了丰富的API,使得开发者可以方便地发送HTTP请求(包括POST和GET)并处理响应,同时还支持文件的上传和下载功能。本文将深入探讨HttpClient如何实现这些功能。 ### POST请求 POST请求通常用于向服务器提交...
### 使用HttpClient通过GET和POST方式提交数据到服务器 在现代Web开发中,客户端与服务器之间的交互至关重要。HTTP协议是Web应用中最常用的通信协议之一,而HttpClient则是Java中用于发送HTTP请求的强大工具。本文...
httpclient的用法,发送get请求和post请求,设置header
它允许开发者模拟GET和POST等HTTP请求,并可以方便地发送JSON等数据作为请求参数。在本文中,我们将深入探讨如何使用HttpClient进行HTTP请求操作,以及如何处理JSON数据。 首先,我们需要引入HttpClient的相关依赖...
一个简单的易学的 基于HttpClient 4.3发送psot及get请求,返回数据,适合初学者,适合初学者
GET请求用于获取服务器上的资源,而POST请求则常用于向服务器提交数据,比如表单数据或上传文件。 1. GET请求:HttpClientUtil中的GET方法通常会创建一个HttpGet对象,设置请求的URL,并通过HttpClient的execute...
在Java编程中,Apache HttpClient库是一个非常常用的工具,用于执行HTTP请求,如GET和POST,以获取或提交网络上的数据。HttpClient提供了丰富的功能,包括设置请求头、处理重定向、管理连接池等,使得开发者可以高效...
### Java HttpClient 发送GET请求和带有表单参数的POST请求详解 #### 一、概述 在Java编程中,处理HTTP请求是一项常见的需求,特别是在与Web服务进行交互时。Apache HttpClient库提供了一种强大的方法来执行HTTP...
本文将深入探讨如何使用HttpClient进行GET和POST请求,并提供相关的代码示例。 首先,GET请求是最常见的HTTP请求类型,通常用于获取资源。在HttpClient中,发送GET请求可以通过`HttpGet`类实现。以下是一个简单的...
这个名为"Android-Httpclient_Get_Post"的资源可能是一个示例项目或教程,展示了如何在Android应用中使用`HttpClient`进行网络数据的获取与提交。 首先,`HttpClient`是Apache的一个组件,它提供了对HTTP协议的全面...
在这个实例中,我们将深入理解如何使用HttpClient进行GET和POST请求。 **一、HttpClient的GET请求** GET请求是最基础的HTTP请求方式,用于从服务器获取资源。在HttpClient中,可以通过`HttpGet`类来创建GET请求。...
HttpClient是Java中非常强大的HTTP客户端库,支持GET、POST等多种请求方式,方便进行网络数据的抓取和解析。在实际应用中,我们需要注意请求的构造、错误处理、连接管理以及资源释放等细节,以确保程序的稳定性和...
本文将详细介绍如何在C#中实现这两种请求,并结合给定的文件名,推测这是一个简单的C#桌面应用程序,用于测试HTTP POST和GET请求。 1. **HTTP GET请求**: - GET请求是最基本的HTTP请求类型,用于从服务器获取资源...
这个库使得从Java程序中发起HTTP请求变得简单,包括GET和POST等常见操作。在本文中,我们将深入探讨HttpClient的基本用法,所需的jar包,以及如何编写Java代码实例。 1. **HttpClient所需Jar包**: 使用HttpClient...
以下是一个使用HttpPost和FileEntity的例子: ```java File file = new File("/path/to/file"); HttpEntity entity = MultipartEntityBuilder.create() .addBinaryBody("file", file, ContentType.DEFAULT_BINARY,...
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。