HttpComponents(Apache HttpComponents Client 4.1.3)通过Post方式访问网页或传输参数

187 篇文章 0 订阅

调用:

package org.apache.http.examples.demo;

import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.client.params.ClientPNames;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

public class Test2 {
	public static void main(String[] args) throws Exception {
		DefaultHttpClient httpclient = new DefaultHttpClient(); // 实例化一个HttpClient
		HttpResponse response = null;
		HttpEntity entity = null;
		httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); // 设置cookie的兼容性


        //以下两行设置通过代理访问(访问本机站点应去掉以下两行)
    	//HttpHost proxy = new HttpHost("10.10.228.43", 808, "http");
    	//httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
		
		
		HttpPost httpost = new HttpPost("http://localhost:8080/httpclient-4.1.3Demo/servlet/TestServlet"); // 引号中的参数是:servlet的地址
		List<NameValuePair> nvps = new ArrayList<NameValuePair>();
		//以下两行是参数传递测试
		nvps.add(new BasicNameValuePair("jqm","fb1f7cbdaf2bf0a9cb5d43736492640e0c4c0cd0232da9de"));
		//BasicNameValuePair("name", "value"), name是post方法里的属性, value是传入的参数值
		nvps.add(new BasicNameValuePair("sqm", "1bb5b5b45915c8"));
		httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); // 将参数传入post方法中
		response = httpclient.execute(httpost); // 执行
		entity = response.getEntity(); // 返回服务器响应

		try {
			System.out.println("--------------------HTTP头信息--------------------");
			System.out.println(response.getStatusLine()); // 服务器返回状态
			Header[] headers = response.getAllHeaders(); // 返回的HTTP头信息
			for (int i = 0; i < headers.length; i++) {
				System.out.println(headers[i]);
			}
			System.out.println("---------------------显示服务器响应的HTML代码-------------------");
			String responseString = null;
			if (response.getEntity() != null) {
				responseString = EntityUtils.toString(response.getEntity()); // 返回服务器响应的HTML代码
				System.out.println(responseString); // 打印出服务器响应的HTML代码
			}
		} finally {
			if (entity != null)
				entity.consumeContent(); // release connection gracefully
		}
		System.out.println("---------------------完成服务器响应的HTML代码的显示-------------------");
		System.out.println("Login form get: " + response.getStatusLine());
		if (entity != null) {
			entity.consumeContent();
		}
	}
}


servlet:

package org.apache.http.examples.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.general.RequestUtil;

public class TestServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request,response);
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		System.out.println("jqm:"+RequestUtil.getString(request, "jqm"));
		System.out.println("sqm:"+RequestUtil.getString(request, "sqm"));
		
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("jqm:"+RequestUtil.getString(request, "jqm"));
		out.println("sqm:"+RequestUtil.getString(request, "sqm"));
		out.flush();
		out.close();
	}

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷月宫主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值