`

java编写http请求

 
阅读更多

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请求jar包

    Java发送HTTP请求是进行网络通信的基本操作之一,广泛应用于数据获取、API调用等场景。在Java中,Apache HttpClient库是一个强大的工具,它允许开发者高效、灵活地处理HTTP请求。这个"java-http请求jar包"实际上就是...

    JAVA 发送http请求工具类

    在Java中,我们可以使用`java.net.HttpURLConnection`或`org.apache.http.client.HttpClient`(Apache HttpClient库)来发送HTTP请求。这两个方法各有优劣:`HttpURLConnection`是Java内置的API,更轻量级,但功能...

    java http 发送xml报文(java发送xml报文实例+参数)

    2. **设置HTTP请求** 使用HttpURLConnection创建连接并设置请求方法为POST: ```java URL url = new URL("http://example.com/api"); HttpURLConnection connection = (HttpURLConnection) url.openConnection...

    java实现http请求以及解析json与java对象转换 项目源代码实例

    在Java编程中,HTTP请求和JSON处理是两个非常重要的概念,广泛应用于Web服务的开发、数据交换和API接口调用。本项目实例提供了完整的源代码,帮助开发者理解并实践这两个主题。 首先,让我们深入理解HTTP请求。HTTP...

    java后端请求HTTP需要用到的jar包及其测试方法(get和post)

    测试过程中,可以使用JUnit或其他测试框架来编写单元测试,模拟不同的请求场景,确保HTTP请求能正确发送和接收。测试内容应包括但不限于:正常请求、错误处理、超时设置、连接管理、异步请求等。 总结来说,利用...

    使用java请求json接口数据

    标题"使用java请求json接口数据"指出我们要使用Java发送HTTP请求到一个提供JSON数据的接口。这通常涉及到HTTP的GET或POST方法。GET用于从服务器获取数据,而POST用于向服务器发送数据。在Java中,我们可以使用`java...

    java发送httpPost请求实现

    用java编写了http Post的请求代码,通过发送请求的 URL,获取远程资源的响应结果,入参为json字符串。使用到httpPost,CloseableHttpClient

    Java 编写的使用HttpClient发送http请求工具类(解决了session无法保留问题)

    Java 编写的使用HttpClient发送http请求工具类(解决了session无法保留问题)

    JAVA实现HTTP传输实例

    1. **HttpURLConnection类**:这是Java标准库中的核心类,用于处理HTTP请求。你可以创建一个URL对象,然后通过openConnection()方法获取HttpURLConnection实例。设置请求方法(GET、POST等),添加请求头,并使用...

    java使用HttpClient发送http请求

    分析这些测试代码,可以帮助你学习如何编写健壮的HTTP请求逻辑,处理各种异常情况。 总之,Java中的HttpClient是一个强大的HTTP客户端工具,通过它,开发者可以轻松地发送HTTP请求并处理响应。理解其工作原理和源码...

    java http 发送xml报文

    本文将深入解析如何利用Java语言实现HTTP请求,并发送XML格式的数据,同时也会涵盖相关的概念、代码解读以及可能遇到的问题。 ### 一、HTTP与XML基础知识 #### HTTP(超文本传输协议) HTTP是互联网上应用最为广泛...

    java编写的浏览器和服务器

    本项目涉及的是使用Java编写的一个简单的浏览器和服务器,这对于学习Java网络编程的初学者来说是一个很好的实践案例。 首先,我们要理解浏览器和服务器的基本工作原理。浏览器是客户端应用程序,用于向服务器发送...

    Java编写的HTTP代理

    Java编写的HTTP代理是一种软件应用,它允许用户通过Java程序作为中介来访问互联网,从而实现对HTTP请求的转发。这种代理服务器通常用于多种用途,包括网络匿名性、内容过滤、性能优化以及网络测试等。在Java中实现...

    http请求(get和post)的java实现

    在Java编程中,我们常常需要与服务器进行交互,发送HTTP请求来获取或提交数据。HTTP协议主要有两种请求方法:GET和POST。本文将详细介绍如何使用Java实现这两种请求。 ### 1. GET请求 GET请求常用于获取资源,参数...

    java发送JSON格式的http通讯的post请求

    Apache HttpClient是一个广泛使用的库,它提供了处理HTTP请求的功能。同时,Jackson或Gson库可以用来序列化和反序列化JSON对象。如果你的项目中还没有这些库,可以通过Maven或Gradle将其添加到构建文件中。 对于...

    java 实现HTTP PROXY

    Java实现HTTP PROXY是一个常见的需求,特别是在开发网络应用或者测试环境中,我们可能需要通过代理服务器转发HTTP请求。本文将深入探讨如何使用Java编程语言来创建一个HTTP代理服务器,并且会涉及相关的源码分析。 ...

    java编写bbs源码

    Java 编写的 BBS 源码是一种基于 Java 语言实现的在线讨论平台,它提供了用户交流、发帖、回帖、搜索等功能。这个论坛系统是完全由 Java 语言构建的,利用了 Java 的面向对象特性、多线程以及网络编程能力。下面将...

    java模拟post请求

    在Java编程中,模拟POST请求是一项常见的任务,特别是在进行API测试、数据分析或者自动化脚本编写时。POST请求常用于向服务器提交数据,比如用户注册、登录等场景。本篇文章将详细讲解如何在Java中实现POST请求,并...

    java实现http服务器实例

    总的来说,通过这个实例,你可以学习到Java中创建基本HTTP服务器的步骤,以及如何理解和处理HTTP请求和响应。这只是一个起点,深入学习HTTP协议和网络编程,你将能够构建更强大、功能更丰富的服务器。

    java编写的留言板

    Servlet是Java中处理HTTP请求的服务器端组件,它与JSP协同工作,处理由JSP提交的用户请求。在这个系统中,Servlet接收来自JSP的POST请求,比如提交新留言或者处理删除留言的请求。Servlet对这些请求进行逻辑处理,...

Global site tag (gtag.js) - Google Analytics