HttpClient4模拟表单提交[通俗易懂]

HttpClient4模拟表单提交[通俗易懂]这里用httpclient4.3模拟一个表单普通文本提交的方法建一个servlet接受表单数据,只传递2个参数,name和password//servlet的访问地址是:http://localhost:80/testjs/servlet/FormServletpublicclassFormServletextendsHttpServlet{publicvoidd

大家好,又见面了,我是你们的朋友全栈君。

这里用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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163293.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python语言介绍

    python语言介绍Python是一种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。发展历程自从20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程。Python的创始人为GuidovanRossum。1989年圣诞节…

  • 黑盒测试的常见的测试用例设计方法有哪些[通俗易懂]

    黑盒测试的常见的测试用例设计方法有哪些[通俗易懂]测试用例怎么设计?一般根据业务知识掌握,之前已有的回归测试用例,测试知识库,测试需求开始设计。黑盒测试的常见的测试用例设计方法有哪些?1)等价类划分:等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.

  • mybatis一级缓存和二级缓存失效_mybatis一级缓存和二级缓存

    mybatis一级缓存和二级缓存失效_mybatis一级缓存和二级缓存我们在上一篇文章(https://mp.weixin.qq.com/s/4Puee_pPCNArkgnFaYlIjg)介绍了MyBatis的一级缓存的作用,如何开启,一级缓存的本质是什么,一级缓存失效的原因是什么?MyBatis只有一级缓存吗?来找找答案吧!MyBatis二级缓存介绍上一篇文章中我们介绍到了MyBatis一级缓存其实就是SqlSession级别的缓存,什么…

  • JaxWsProxyFactoryBean调用WebService实例[通俗易懂]

    JaxWsProxyFactoryBean调用WebService实例[通俗易懂]WebServiceUtils工具类packagexxxx;importjava.util.ResourceBundle;importorg.apache.cxf.endpoint.Client;importorg.apache.cxf.frontend.ClientProxy;importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean…

  • settimeout时间误差_采集终端和电能表日计时误差

    settimeout时间误差_采集终端和电能表日计时误差setInterval指定的是“开始执行”之间的间隔,并不考虑每次任务执行本身所消耗的时间。因此实际上,两次执行之间的间隔会小于指定的时间。比如,setInterval指定每100ms执行一次,每次执行需要5ms,那么第一次执行结束后95毫秒,第二次执行就会开始。如果某次执行耗时特别长,比如需要105毫秒,那么它结束后,下一次执行就会立即开始。为了确保两次执行之间有固定的间隔,可以不用setInterval,而是每次执行结束后,使用setTimeout指定下一次执行的具体时间。

  • ps2无线手柄连接arduino的使用方法

    ps2无线手柄连接arduino的使用方法首先在https://github.com/madsci1016/Arduino-PS2X这里下载ps2x的库文件。将PS2X_lib放到库文件目录下。接线方法如下,代码部分#definepressurestrue的意思是让上下左右的按键可以度数,按下时analogRead值为255.#definerumbletrue的意思是开启震动…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号