1. 程式人生 > >HttpClient4模擬表單提交

HttpClient4模擬表單提交

這裡用httpclient4.3模擬一個表單普通文字提交的方法

建一個servlet接受表單資料,只傳遞2個引數,name和password

//servlet的訪問地址是:http://localhost:80/testjs/servlet/FormServlet

public class FormServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");

                //獲取傳遞來的引數
String name = request.getParameter("name");
String password = request.getParameter("password");

System.out.println("你輸入的姓名是:"+name);
System.out.println("你輸入的密碼是:"+password);
//設定響應內容
response.getWriter().write(name+", 歡迎訪問");
}

}

用到的jar包有:commons-codec-1.6.jar,commons-logging-1.1.3.jar,httpclient-4.3.1.jar,httpcore-4.3.jar,httpmime-4.3.1.jar

package com.test.httpClient.myTest;


import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;


import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.junit.Test;

public class TestHttpClient4 {


@Test
public void test1() throws IOException{
CloseableHttpClient httpClient = HttpClients.createDefault();
try{
//post請求的url地址
HttpPost httpPost = new HttpPost("http://localhost:80/testjs/servlet/FormServlet");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
//傳遞2個引數  name和password
nvps.add(new BasicNameValuePair("name","王五"));
nvps.add(new BasicNameValuePair("password","12345"));
//轉碼  封裝成請求實體
HttpEntity reqEntity = new UrlEncodedFormEntity(nvps,Consts.UTF_8);

httpPost.setEntity(reqEntity);

System.out.println("請求url地址"+httpPost.getURI());
//提交表單請求   response是表單的響應
CloseableHttpResponse response = httpClient.execute(httpPost);
            try {
                HttpEntity respEntity = response.getEntity();
                //響應狀態
                System.out.println("Login form get: " + response.getStatusLine());
                //EntityUtils.consume(entity);
                //獲取響應內容
                System.out.println(EntityUtils.toString(respEntity,Charset.forName("utf-8")));
                //銷燬
                EntityUtils.consume(respEntity);
            } finally {
                response.close();
            }
}finally{
httpClient.close();
}

}

}

執行結果 

test端

請求url地址http://localhost:80/testjs/servlet/FormServlet
Login form get: HTTP/1.1 200 OK
王五, 歡迎訪問

tomcat伺服器端

你輸入的姓名是:王五
你輸入的密碼是:12345