网络——提交表单数据(post方式)

【0】README

1) 本文文字描述 转自 core java volume 2 , 旨在理解 网络——提交表单数据 的基础知识 ;
2) for source code, please visit https://github.com/pacosonTang/core-java-volume/tree/master/coreJavaAdvanced/chapter3/postRequest


【1】提交表单数据(post方式)相关

0)执行server 端脚本过程中的数据流:
这里写图片描述

1)在向web server 发送消息时, 通常会用到两个命令: GET AND POST; (干货——在向web server 发送消息时, 通常会用到两个命令: GET AND POST;)
2)get 提交方式

  • 2.1)使用get的时候, 只需要将参数添加到 URL 的结尾处即可, 这种 URL 的格式如下:

    http://host/script?parameters

  • 2.2) get 命令有一个缺点: 大多数浏览器对 get 请求中可以包含的字符数做了限制; (干货——get 命令有一个缺点)

3)post 提交方式

  • 3.1)在使用 post 命令时, 并不需要再URL 中添加任何参数, 而是从 URLConnection 中获取输出流, 并将 名-值对写入到流中。
  • 3.2)POST提交方式,提交数据到 server 的详细过程: (干货——POST提交方式,提交数据到 server 的详细过程)

    • step1) 创建一个URLConnection对象;

      URL url = new URL(urlName);
      URLConnection connection = url.openConnection();

    • step2)调用 setDoOutput 方法建立一个用于输出的连接:

      connection.setDoOutput(true);

    • step3)调用 getOutputStream 方法获得一个流, 可以通过这个流向 server 发送数据, 如果要向 server 发送文本消息, 那么可以非常方便地将流包装在 PrintWriter 对象中:

      PrintWriter out = new PrintWriter(connnection.getOutputStream());

    • step4) 向 server 发送数据;

      out.println(name1 + “=” + URLEncoder.encode(value1, “UTF-8”) + “&”);

    • step5)关闭输出流:

      out.close();

4)在读取响应过程中会碰到一个问题:

  • 4.1) 如果脚本运行错误,那么调用 connection.getInputStream() 时就会抛出一个 FileNotFoundException 异常。但是此server 仍然会向 浏览器返回一个 错误页面(常见的404 错误);
  • 4.2)为了捕捉这个错误页面, 可以将 URLConnection 对象转换为 HttpURLConnection 类并调用它的 getErrorStream 方法: (干货——如何捕捉这个错误页面)

    InputStream err = ((HttpURLConnection) connection).getErrorStream();


5) 人们常会问: 除了我们提供的 数据外, URLConnection 到底还向server 发送了什么信息: (干货——除了我们提供的数据外,URLConnection 到底还向server 发送了什么信息?)
  • 5.1) URLConnection 对象首先向 server 发送一个 请求头。 当提交表单数据时, 该请求头包含下面这行内容:

    Content-Type:application/x-www-form-urlencoded

  • 5.2)而 POST 的请求头还必须包括内容长度, 如

    Content-Length:24;

  • 5.3)请求头必须以空白行结尾。 紧随其后的才是数据部分。 web server 过滤掉请求头后将数据部分发送给server 端 脚本程序;

Attention) URLConnection 对象会把 你发送到 输出流的所有数据都缓存起来, 这是因为在真正发送前, 它必须首先确定内容的总长度;
6) 看个荔枝: (示例代码 用于将 Post 数据发送给任何脚本, 他将数据放在如下的 .properties 文件:

url = http://esa.un.org/unpd/wpp/unpp/p2k0data_script.asp
Panel=1
Variable=2
Location=404
Varient=2
StartYear=1950
EndYear=2050

这里写图片描述
这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html5实现最智能大气的公司年会抽奖(源码)

文章目录 1.设计来源1.1 主界面1.3 数据配置1.4 抽奖效果1.5 中奖效果 2.效果和源码配置2.1 动态效果2.2 员工信息配置2.3 奖品信息配置2.4 抽奖音效配置2.5 源代码2.6 项目结构 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/…

Linux入门(一)之权限指令系统管理

一、权限指令 普通用户需要使用sudo或者root超级管理员可以执行权限指令。 二、linux系统init程序 (1)运行init程序(引用runoob.com) init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗&#xf…

java jsf_使用Java和JSF构建一个简单的CRUD应用

java jsf使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护。 今天尝试Okta。 JavaServer Faces(JSF)是用于构建Web应用程序的Java框架,其中心是作为用户…

网络——发送email(一个简单荔枝)

【0】README 1) 本文文字描述 转自 core java volume 2 , 旨在理解 网络——发送email 的基础知识 ; 2) for souce code , please visit https://github.com/pacosonTang/core-java-volume/tree/master/coreJavaAdvanced/chapte…

算法七之希尔排序

一、希尔排序 (1)简介 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量…

cuba 平台_CUBA平台:TypeScript SDK和REST API

cuba 平台在本文中,我们将讨论已存在很长时间但尚未广为人知的CUBA平台的功能- 前端SDK生成器 ,并了解它如何与CUBA的REST API插件一起使用 。 Java JavaScript –网络婚姻 仅八年前,我们Java开发人员在我们的Web应用程序中使用JavaScript作…

算法八之归并排序

一、归并排序原理 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序…

数据库编程——intro to JDBC

【0】README 1) 本文文字描述 转自 core java volume 2 , 旨在理解 数据库编程——JDBC 的基础知识 ; 2)JDBC起源: 96年, Sun公司发布了 第一版的java 数据库连接(JDBC)API&#…

java \t怎么从头开始_通过这些简单的步骤从头开始学习Java

java \t怎么从头开始Java是用于软件开发的最受欢迎的编程语言之一。 无论您的最终目标或技能水平如何,学习和掌握Java都将为您作为开发人员打开大门。 今天,我们将讨论一些原因,我们认为您应该开始学习Java,然后提供有关入门的深入…

HDFS 的dao

一、HDFS dao接口package cn.mk.dao;import java.io.FileNotFoundException; import java.io.IOException;import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.FileStatus;public interface HDFSDao {public boolean mkDirs(String path) throws IOExcep…

数据库编程——JDBC 配置

【0】README 1) 本文文字描述 转自 core java volume 2 , 旨在理解 数据库编程——JDBC 配置 的基础知识 ; 2) update timestamp: 1602022101; 更新内容有: 上传了一些图片, 而且举证说明了 为…

使用互联网了解的两个月里_我两个月来对Quarkus的了解

使用互联网了解的两个月里又一年,另一个来临,我很荣幸再次开启围绕Java,语言,生态系统和朋友的24篇精彩博客文章的统治,这些博客文章将我们所有人带入了今年最安静的假期。 这已经是第五年了(我只错过了201…

javah导出类的头文件抛出异常——java.lang.IllegalArgumentException: Not a valid class name(原因及解决方法)

【0】README 0.1) 本文旨在给出 java.lang.IllegalArgumentException 异常的原因 和 处理方法, 该异常和 javah 没有半毛钱关系 ; 0.2) 本文附带地给出了 javah 的作用 和 java 调用本地代码(如 C语言)的…

使用阿里巴巴json映射_使用JSON模式验证来映射稀疏JSON

使用阿里巴巴json映射在本文中,我们将探讨在创建和共享API时出现的问题。 特别是,需要: 表达数据的结构 提供对该数据的验证 允许将来改变主意 通过您拥有的部分数据与客户进行沟通 缺少数据时填写空白 人们通常使用版本编号的API解决此…

本地方法(JNI)——从java 程序中调用C函数

【0】README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法——从java 程序中调用C函数 的基础知识 ; 2) for source code, please visit https://github.com/pacosonTang/core-java-volume/tree/master/co…

Hadoop入门(一)概念与单机安装

一、hadoop的概念 (1)什么是大数据 大数据是不能用传统的计算技术处理的大型数据集的集合。它不是一个单一的技术或工具,而是涉及的业务和技术的许多领域。 (2)hadoop的定义 Hadoop是一个由Apache基金会所开发的分布式…

螺旋测微器 flash_使用测微计收集应用程序指标

螺旋测微器 flash什么是Micrometer? Micrometer是一个简单的外观,用于以供应商中立的方式收集Java应用程序中的指标。 您可以考虑使用SLF4J作为指标。 Micrometer内置了对许多不同指标后端的内置支持,包括Atlas,Datadog&#xff0…

java JNI调用C语言动态链接库(java.lang.UnsatisfiedLinkError: no yourClassName in java.library.path 异常的解决方法)

转自: http://watershitter.iteye.com/blog/477615今天花了至少3个小时跑这个java调c的动态链接库的Hello,native world的程序。 把所有犯的错误和要点总结一下! 1 java 中 c语言函数的声明 public native static void greeting(); //就像是接口声明一样…

Hadoop入门(二)集群安装

一、集群安装条件前置 在虚拟机上先准备一个机子 按用前面【安装单机hadoop】 已完成安装jdk,hadoop和ssh、网络等配置环境等。 虚拟机和操作系统 环境:ubuntu14 hadoop2.6jdk1.7ssh 虚拟机:(vmware10) 二、集群安装环境设置…

poj doubles_余数运算符在Java中用于Doubles

poj doubles我在OSU任教已近两年了,这总是令我惊讶,我从学生那里学到了多少。 例如,过去, 我让学生写一些我不理解的奇怪代码 。 在这一点上,即使经过300多个博客文章, 几个YouTube视频 ,甚至还…