在某些情况下,需要用Java applicatioin来模拟form,向服务器(本文以servlet为例)发送http post请求,包括提交表单域中的数据以及上传文件。如果仅仅是传递form中的数据,而不包含上传文件,那是很简单的,比如Java application可以这么写:

package com.pat.postrequestemulator;

importjava.io.BufferedReader;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.io.OutputStreamWriter;

importjava.net.HttpURLConnection;

importjava.net.URL;

public classPostRequestEmulator

{

public static void main(String[] args)throws Exception

{

// 服务地址

URL url = newURL("http://127.0.0.1:8080/test/upload");

// 设定连接的相关参数

HttpURLConnection connection= (HttpURLConnection) url.openConnection();

connection.setDoOutput(true);

connection.setRequestMethod("POST");

OutputStreamWriter out = newOutputStreamWriter(connection.getOutputStream(), "UTF-8");

// 向服务端发送key = value对

out.write("username=kevin&password=pass");

out.flush();

out.close();

// 获取服务端的反馈

String strLine="";

String strResponse ="";

InputStream in =connection.getInputStream();

BufferedReader reader = newBufferedReader(new InputStreamReader(in));

while((strLine =reader.readLine()) != null)

{

strResponse +=strLine +"\n";

}

System.out.print(strResponse);

}

}

服务端的servlet可以这么写:

packagecom.pat.handlinghttprequestservlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

public classHandlingHttpRequestServlet extends HttpServlet

{

private static final longserialVersionUID = 1L;

@Override

protected void doGet(HttpServletRequestreq, HttpServletResponse resp)

throws ServletException, IOException

{

super.doGet(req, resp);

}

@Override

protected voiddoPost(HttpServletRequest req, HttpServletResponse resp)

throwsServletException, IOException

{

String username =req.getParameter("username");          //获取username所对应的value

String password =req.getParameter("password");           //获取password所对应的value

System.out.println("Thereceived username and password is: " + username + "/" +password);

// 向请求端发回反馈信息

PrintWriter out =resp.getWriter();

out.print("OK");

out.flush();

out.close();

super.doPost(req, resp);

}

}

一切看起来都不复杂。但是如果要模拟的表单,除了要向服务器传递如上面的“key = value”这样的普通信息,同时还要上传文件,事情就复杂得多。

java模拟servlet_Java应用程序模拟向Servlet发送POST请求相关推荐

  1. JAVA关于集合类小程序--模拟新浪用户注册

    JAVA关于集合类小程序–模拟新浪用户注册 任务介绍: 编写一个模拟新浪微博用户注册的小程序,要求使用HashSet集合来实现.用户需要输入的有:用户名,密码.确认密码.生日(格式为:yyyy-mm- ...

  2. 解决java编译错误(程序包javax.servlet不存在javax.servlet.*)

    解决java编译错误(程序包javax.servlet不存在javax.servlet.*) 两种解决方法 第一种: 1.在电脑搜索servlet-api.jar 一般在apache-tomcat-8 ...

  3. java编译错误:程序包javax.servlet不存在javax.servlet.*

    今天在关于servlet的编译中出现了一下小小的错误,如图所示: 程序包javax.servlet不存在,并且程序包javax.servlet.http不存在等错误.我查阅了一下资料由于servlet ...

  4. java请求servlet,[Java]Servlet发送Post请求

    演示实例:AServlet发送一个Student对象到BServlet #### 1.AServlet部分 首先造一个学生stu,然后通过fastjson的`toJSONString`方法把对象转换成 ...

  5. java 猜密码 本地程序 模拟_java – 使用AES / CTR模拟流密码

    我正在编写一个应用程序服务器,我决定使用AES128 / CTR / NoPadding来保护连接,因为它被认为足够安全而不必将字节扩展到块边界,我认为它非常适合TCP.在逻辑上是一个无缝的流. 问题 ...

  6. 小程序模拟服务器,小程序模拟请求服务器json数据

    那么,怎么请求服务器json数据? 如果你是一枚前端,不会写后端接口的话 又想测试数据,看自己写的效果的时候 不要慌 那么,把你的json放在服务器底下 模拟请求服务器json数据即可 步骤: 1用能 ...

  7. 解决java编译错误( 程序包javax.servlet不存在javax.servlet.*)

    先把Tomcat下的lib文件夹里面的servlet-api.jar路劲添加到classpath下,然后再把servlet-api.jar拷贝到JDK路劲的jre\lib\ext文件夹下即可.

  8. 微信小程序真机无法发送网络请求or网络错误解决方法

    问题 公司一项目用的好好的,因安全升级切换域名. 1.代码和微信公众平台上的域名都修改好了,微信开发者工具中访问https的api接口正常: 2.微信开发者工具无论是否打开了[不校验合法域名.web- ...

  9. [小程序]微信小程序获取input并发送网络请求

    1. 获取输入框数据 wxml中的input上增加bindinput属性,和方法值 在js部分定义与之对应的方法,只要在输入的时候,数据就会绑定调用到该方法,存入data属性变量中 2. 调用get请 ...

最新文章

  1. 2014 百度之星题解 1002 - Disk Schedule
  2. html动画效果开源代码,8款强大的CSS3/HTML5动画及应用源码
  3. 如何确保TCP协议传输稳定可靠?
  4. html 超链接打开Excel,计算机打开Excel超链接时提示的解决方案
  5. Android应用内加载pdf的方法?
  6. TCP连接——三次握手和四次断开
  7. python读取grib2数据_python读取grib grib2气象数据
  8. python invalid start byte_Python 3.6中 'utf-8' codec can't decode byte invalid start byte?汗血宝马...
  9. Bailian4122 切割回文【DP】
  10. 计算机桌面空白图标如何删除,桌面上有两个i空白文件的图标删不掉怎么办急急急...
  11. Android校招复习资料整理
  12. 前端实现炫酷动效_创建炫酷 CSS 背景效果的 10 个代码片段
  13. 智能车浅谈——过程通道篇
  14. uni 页面加载完毕_uniapp小程序如何等待数据回来才加载页面?
  15. 我的世界制作服务器地图,我的世界1.7地图制作必看心得 教你怎么做地图
  16. 编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
  17. 平方数列、立方数列求和公式与推导
  18. 【信息奥赛题解】昆虫繁殖(详细分析题解 C++ 代码)
  19. linux中fq格式转fa,fasta/fq文件处理万能工具——Seqkit学习记录
  20. 初学安卓之二维码的简单实现,android开发网上购物app

热门文章

  1. C# 约瑟夫环 用数组实现
  2. 如何使用markdown编辑器?官方文档在此
  3. 看动画学算法之:排序-基数排序
  4. Libra白皮书解读
  5. Leet Code OJ 171. Excel Sheet Column Number [Difficulty: Easy]
  6. Hibernate中使用未映射为主键的“id”字段进行查询的场景分析
  7. Spring学习-- SpEL表达式
  8. Linux网络编程 之 IO多路复用poll(九)
  9. C++ unordered_map 使用详解(含C++20新特性)
  10. leetcode -- 279. Perfect Squares