`

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 发送xml报文(java发送xml报文实例+参数)

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

    java发送httpPost请求实现

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

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

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

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

    http请求(get和post)的java实现:java代码实现http请求get和post,已经封装好的工具类,直接复制就可以使用,简单

    Feign使得编写JavaHTTP客户端更容易

    Feign 使得编写Java HTTP客户端更容易

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    java web接口开发demo

    java web接口开发demo 详细地址:http://blog.csdn.net/zxw136511485/article/details/51437115

    java源码包---java 源码 大量 实例

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    JAVA_API1.6文档(中文)

    java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...

    JAVA上百实例源码以及开源项目

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    JAVA上百实例源码以及开源项目源代码

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    Java代理服务器:这是用Java编写的简单HTTPHTTPS代理服务器

    Java HTTP / HTTPS代理服务器代理服务器代理服务器是位于客户端和客户端希望从中检索文件的远程服务器之间的服务器。 来自客户端的所有流量都被发送到代理服务器,并且代理服务器代表客户端向远程服务器发出请求。 ...

    用java实现Web服务器

    java实现web服务器:(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。  (2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是...

    java源码包4

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    java源码包3

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    Java 1.6 API 中文 New

    java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...

    java源码包2

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    编写简单的代理服务器(java源码)

    代理服务器打开一个端口接收浏览器发来的访问某个站点的请求,从请求的字符串中解析出用户想访问哪个网页,让后通过URL对象建立输入流读取相应的网页内容,最后按照web服务器的工作方式将网页内容发送给用户浏览器 ...

    用Java语言编写一个回调服务,允许第三方使用GET请求问号传参的方式调用

    在处理程序中,我们从HTTP请求中获取查询字符串,并将其附加到响应消息中。然后,我们发送一个200响应代码和响应长度,表示回调已成功接收。 为了测试这个回调服务,你可以使用浏览器或者curl命令发送一个GET请求到...

    java开源包4

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

Global site tag (gtag.js) - Google Analytics