java发送http请求(提交form表单)

http://hbiao68.iteye.com/blog/1973914

写一个servlet用于测试请求

Java代码  

  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. public class Abc extends HttpServlet {
  8. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  9. System.out.println("doGet");
  10. this.doPost(request, response);
  11. }
  12. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  13. System.out.println("doPost");
  14. System.out.println("aaa : "+request.getParameter("aaa"));
  15. System.out.println("param1 : "+request.getParameter("param1"));
  16. System.out.println(request.getHeader("avc"));
  17. PrintWriter pw = response.getWriter();
  18. pw.write(request.getParameter("param1"));
  19. pw.flush();
  20. pw.close();
  21. }
  22. }

web.xml配置文件

Xml代码  

  1. <servlet>
  2. <description></description>
  3. <display-name>Abc</display-name>
  4. <servlet-name>Abc</servlet-name>
  5. <servlet-class>com.Abc</servlet-class>
  6. </servlet>
  7. <servlet-mapping>
  8. <servlet-name>Abc</servlet-name>
  9. <url-pattern>/Abc</url-pattern>
  10. </servlet-mapping>

抽象出一个工具请求类

Java代码  

  1. package http;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.io.OutputStreamWriter;
  5. import java.net.HttpURLConnection;
  6. import java.net.URL;
  7. import java.util.Map;
  8. import java.util.Map.Entry;
  9. public class HttpUtil {
  10. public static String http(String url, Map<String, String> params) {
  11. URL u = null;
  12. HttpURLConnection con = null;
  13. // 构建请求参数
  14. StringBuffer sb = new StringBuffer();
  15. if (params != null) {
  16. for (Entry<String, String> e : params.entrySet()) {
  17. sb.append(e.getKey());
  18. sb.append("=");
  19. sb.append(e.getValue());
  20. sb.append("&");
  21. }
  22. sb.substring(0, sb.length() - 1);
  23. }
  24. System.out.println("send_url:" + url);
  25. System.out.println("send_data:" + sb.toString());
  26. // 尝试发送请求
  27. try {
  28. u = new URL(url);
  29. con = (HttpURLConnection) u.openConnection();
  30. //// POST 只能为大写,严格限制,post会不识别
  31. con.setRequestMethod("POST");
  32. con.setDoOutput(true);
  33. con.setDoInput(true);
  34. con.setUseCaches(false);
  35. con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  36. OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream(), "UTF-8");
  37. osw.write(sb.toString());
  38. osw.flush();
  39. osw.close();
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. } finally {
  43. if (con != null) {
  44. con.disconnect();
  45. }
  46. }
  47. // 读取返回内容
  48. StringBuffer buffer = new StringBuffer();
  49. try {
  50. //一定要有返回值,否则无法把请求发送给server端。
  51. BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
  52. String temp;
  53. while ((temp = br.readLine()) != null) {
  54. buffer.append(temp);
  55. buffer.append("\n");
  56. }
  57. } catch (Exception e) {
  58. e.printStackTrace();
  59. }
  60. return buffer.toString();
  61. }
  62. }

备注:一定要获取返回值,否则请求无法到达。

readLine()为阻塞方法,会等待服务器的响应,否则会一直等待

con.setDoOutput(true); 这个表示是要发送请求到URL地址,没有这句话server是不会响应的。

参数的传递方式类似于在URL后面添加"?key=value&key1=value1"这种方式

测试类

Java代码  

  1. @Test
  2. public void test3() {
  3. Map parames = new HashMap<String, String>();
  4. parames.put("param1", "param1_value");
  5. parames.put("param2", "param2_value");
  6. parames.put("param3", "param3_value");
  7. // 如果地址栏中有aaa这个参数,则默认选择地址栏的,如果没有则选择添加的参数
  8. parames.put("aaa", "aaa_value");
  9. HttpUtil.http("http://localhost:8080/a/Abc?aaa=dddd", parames);
  10. }

原文地址:https://www.cnblogs.com/bobc/p/8809761.html

时间: 2024-11-04 19:27:56

java发送http请求(提交form表单)的相关文章

使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html

使用ajax提交form表单,包括ajax文件上传 前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的ajax $.ajax({ url:"${pageContext.request.contextPath}/public/testupload", type:"post", data:{username:username},

Jquery提交form表单

前台代码 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Js_submit.aspx.cs" Inherits="Ctrip.Corp.Report.OfflineSite.CorpReportSetting.Js_submit" %> 2 3 <html xmlns="http://www.w3.org/1999/xhtml

通过php jq ajax 提交form表单

参考http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2013/0619/13568.html html <div id="contact_form"> <form name="contact" method="post" > <label for="name" id="name_label">姓名</label

ajax(ajaxSubmit)提交form表单

ajaxSubmit提交form表单 依赖脚本: 1 <script src="<%=request.getContextPath()%>/huangdao/jquery/jquery-form.js" type="text/javascript"></script> HTML 1 <form id="saveForm" name="form01" class="demofo

按下回车默认提交form表单问题

最近开发中碰到一个问题,项目中有几个列表展示页面,允许用户通过查询条件模糊查询数据.用户录入关键字后点击回车会调用查询方法根据关键字查询,原先功能没有问题,但是最近发现在查询输入框中按下回车会直接刷新页面不调用查询方法.检查发现有人在查询模块新增了一个form表单,找了很多和form表单相关资料才发现当form表单内只有一个type="text"类型的<input>标签时按下回车默认会提交form表单.解决方法很简单就是在form表单内新增一个隐藏的type="t

jquery的ajax提交form表单方式总结

方法一: function AddHandlingFeeToRefund() { var AjaxURL= "../OrderManagement/AjaxModifyOrderService.aspx"; alert($('#formAddHandlingFee').serialize()); $.ajax({ type: "POST", dataType: "html", url: AjaxURL + '?Action=' + 'Submit

使用js提交form表单的两种方法

提交form表单的时候瑶族一些简单的验证,验证完后才能提交,避免无效提交. 1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的头部插入一个js方法: function checkUser(){ var result = document.getElementById("userid").value; var password = document

ajax提交form表单资料详细汇总

一.ajax提交form表单和不同的form表单的提交主要区别在于,ajax提交表单是异步提交的,而普通的是同步提交的表单.通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.传统普通的网页(不使用ajax)如果需要更新内容,必须重载整个网页页面. 二.通过ajax提交form实现的登录实例: <body> <h1 align="center">用户登录</h1> &

ajax()使用serialize()提交form表单

jQuery的serialize()方法通过序列化表单值,创建URL编码文本字符串,我们就可以选择一个或多个表单元素,也可以直接选择form将其序列化,如: <form id="form"> <ul class="register_content_right_form_one"> <li id="register_content_on" style="margin-top: 16px;">

js获取上传文件后缀名(附js提交form表单)

代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <script> function check_file()  {   var strFileName=form1.FileName.value;   if (strFileName=="")   {     alert(&