1.使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。
1. 创建HttpClient对象。
2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
6. 释放连接。无论执行方法是否成功,都必须释放连接
demo:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.ParseException; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.URIUtils; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.log4j.Logger; import com.mangocity.ziwoyou.bean.View; import com.mangocity.ziwoyou.bean.ViewInfo; public class ZiWoYouBaseService { protected final Logger log = Logger.getLogger(getClass()); private String custId = null; private String apikey = null; private String serverHost = null; public String call (Map<String , String> bodyMap,String serviceName) throws Exception { String responseData = null; Map<String,String> map=new HashMap<String,String>(); map.put("custId", getCustId()); map.put("apiKey", getApikey()); map.put("serverHost", getServerHost()); map.put("serviceName", serviceName); responseData = get(bodyMap , map); System.out.println("响应json:\n"+responseData); return responseData; } /** * 发送 get请求 */ public static String get(Map<String , String> bodyMap, Map<String,String> map) { HttpClient httpclient = new DefaultHttpClient(); String responseContent = null; BufferedReader in = null; try { String custId = map.get("custId"); String apikey = map.get("apikey"); String serverHost = map.get("serverHost"); String serviceName = map.get("serviceName"); List<NameValuePair> qparams = dealRequestBody(bodyMap, custId, apikey); HttpResponse response = sendGet(httpclient, serverHost, serviceName, qparams); in = new BufferedReader(new InputStreamReader(response.getEntity() .getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; while ((line = in.readLine()) != null) { sb.append(line); } in.close(); responseContent = sb.toString(); System.out.println(responseContent); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } finally{ try{ if(in!=null){ in.close(); } } catch(IOException ex){ ex.printStackTrace(); } } return responseContent; } /** * 发送http get请求 * @param httpclient * @param serverHost * @param serviceName * @param qparams * @return * @throws URISyntaxException * @throws IOException * @throws ClientProtocolException */ private static HttpResponse sendGet(HttpClient httpclient, String serverHost, String serviceName, List<NameValuePair> qparams) throws URISyntaxException, IOException, ClientProtocolException { URI uri = URIUtils.createURI("http", serverHost, -1, serviceName,URLEncodedUtils.format(qparams, "UTF-8"), null); HttpGet httpget = new HttpGet(); httpget.setURI(uri); System.out.println(httpget.getURI()); HttpResponse response = httpclient.execute(httpget); return response; } /** * 处理请求参数 * @param bodyMap * @param custId * @param apikey * @return */ private static List<NameValuePair> dealRequestBody( Map<String, String> bodyMap, String custId, String apikey) { List<NameValuePair> qparams = new ArrayList<NameValuePair>(); qparams.add(new BasicNameValuePair("custId", custId)); qparams.add(new BasicNameValuePair("apikey", apikey)); Iterator<Map.Entry<String, String>> iter = bodyMap.entrySet().iterator(); while(iter.hasNext()){ Entry<String , String> entry = iter.next(); String key = entry.getKey(); String value = entry.getValue(); qparams.add(new BasicNameValuePair(key, value)); } return qparams; } public String getApikey() { return apikey; } public void setApikey(String apikey) { this.apikey = apikey; } public String getCustId() { return custId; } public void setCustId(String custId) { this.custId = custId; } public String getServerHost() { return serverHost; } public void setServerHost(String serverHost) { this.serverHost = serverHost; } public static void main(String[] args) { Map bodyMap = new HashMap(); Map map = new HashMap(); map.put("custId", "***"); map.put("apikey", "********"); map.put("serverHost", "*******"); map.put("serviceName", "****"); bodyMap.put("cityName", "北京,上海,广州"); bodyMap.put("limit", "5"); String responseData = get(bodyMap , map);//获取到的数据为xml ParseUtil<View> imageListDataParseUtil = new ParseUtil<View>();//转换xml数据 View view = imageListDataParseUtil.xmlToObject(responseData,View.class); for (ViewInfo vi : view.getViews()) { System.out.println(vi.getCityName()); } } }
参考链接:https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.1.1/httpclient-contrib/docs/translated-tutorial/httpclient-tutorial-simplified-chinese.pdf
相关推荐
Java发送HTTP请求是进行网络通信的基本操作之一,广泛应用于数据获取、API调用等场景。在Java中,Apache HttpClient库是一个强大的工具,它允许开发者高效、灵活地处理HTTP请求。这个"java-http请求jar包"实际上就是...
在Java中,我们可以使用`java.net.HttpURLConnection`或`org.apache.http.client.HttpClient`(Apache HttpClient库)来发送HTTP请求。这两个方法各有优劣:`HttpURLConnection`是Java内置的API,更轻量级,但功能...
在Java编程中,HTTP请求和JSON处理是两个非常重要的概念,广泛应用于Web服务的开发、数据交换和API接口调用。本项目实例提供了完整的源代码,帮助开发者理解并实践这两个主题。 首先,让我们深入理解HTTP请求。HTTP...
2. **设置HTTP请求** 使用HttpURLConnection创建连接并设置请求方法为POST: ```java URL url = new URL("http://example.com/api"); HttpURLConnection connection = (HttpURLConnection) url.openConnection...
测试过程中,可以使用JUnit或其他测试框架来编写单元测试,模拟不同的请求场景,确保HTTP请求能正确发送和接收。测试内容应包括但不限于:正常请求、错误处理、超时设置、连接管理、异步请求等。 总结来说,利用...
标题"使用java请求json接口数据"指出我们要使用Java发送HTTP请求到一个提供JSON数据的接口。这通常涉及到HTTP的GET或POST方法。GET用于从服务器获取数据,而POST用于向服务器发送数据。在Java中,我们可以使用`java...
用java编写了http Post的请求代码,通过发送请求的 URL,获取远程资源的响应结果,入参为json字符串。使用到httpPost,CloseableHttpClient
Java实现HTTP PROXY是一个常见的需求,特别是在开发网络应用或者测试环境中,我们可能需要通过代理服务器转发HTTP请求。本文将深入探讨如何使用Java编程语言来创建一个HTTP代理服务器,并且会涉及相关的源码分析。 ...
Java 编写的使用HttpClient发送http请求工具类(解决了session无法保留问题)
1. **HttpURLConnection类**:这是Java标准库中的核心类,用于处理HTTP请求。你可以创建一个URL对象,然后通过openConnection()方法获取HttpURLConnection实例。设置请求方法(GET、POST等),添加请求头,并使用...
分析这些测试代码,可以帮助你学习如何编写健壮的HTTP请求逻辑,处理各种异常情况。 总之,Java中的HttpClient是一个强大的HTTP客户端工具,通过它,开发者可以轻松地发送HTTP请求并处理响应。理解其工作原理和源码...
本文将深入解析如何利用Java语言实现HTTP请求,并发送XML格式的数据,同时也会涵盖相关的概念、代码解读以及可能遇到的问题。 ### 一、HTTP与XML基础知识 #### HTTP(超文本传输协议) HTTP是互联网上应用最为广泛...
本项目涉及的是使用Java编写的一个简单的浏览器和服务器,这对于学习Java网络编程的初学者来说是一个很好的实践案例。 首先,我们要理解浏览器和服务器的基本工作原理。浏览器是客户端应用程序,用于向服务器发送...
Java编写的HTTP代理是一种软件应用,它允许用户通过Java程序作为中介来访问互联网,从而实现对HTTP请求的转发。这种代理服务器通常用于多种用途,包括网络匿名性、内容过滤、性能优化以及网络测试等。在Java中实现...
在Java编程中,我们常常需要与服务器进行交互,发送HTTP请求来获取或提交数据。HTTP协议主要有两种请求方法:GET和POST。本文将详细介绍如何使用Java实现这两种请求。 ### 1. GET请求 GET请求常用于获取资源,参数...
Apache HttpClient是一个广泛使用的库,它提供了处理HTTP请求的功能。同时,Jackson或Gson库可以用来序列化和反序列化JSON对象。如果你的项目中还没有这些库,可以通过Maven或Gradle将其添加到构建文件中。 对于...
Java 编写的 BBS 源码是一种基于 Java 语言实现的在线讨论平台,它提供了用户交流、发帖、回帖、搜索等功能。这个论坛系统是完全由 Java 语言构建的,利用了 Java 的面向对象特性、多线程以及网络编程能力。下面将...
在Java编程中,模拟POST请求是一项常见的任务,特别是在进行API测试、数据分析或者自动化脚本编写时。POST请求常用于向服务器提交数据,比如用户注册、登录等场景。本篇文章将详细讲解如何在Java中实现POST请求,并...
总的来说,通过这个实例,你可以学习到Java中创建基本HTTP服务器的步骤,以及如何理解和处理HTTP请求和响应。这只是一个起点,深入学习HTTP协议和网络编程,你将能够构建更强大、功能更丰富的服务器。
Servlet是Java中处理HTTP请求的服务器端组件,它与JSP协同工作,处理由JSP提交的用户请求。在这个系统中,Servlet接收来自JSP的POST请求,比如提交新留言或者处理删除留言的请求。Servlet对这些请求进行逻辑处理,...