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

来源:互联网 发布:阿里云邮箱登录网址 编辑:程序博客网 时间:2024/05/16 05:54

调用:

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(); // 实例化一个HttpClientHttpResponse 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();}}


 

原创粉丝点击