java发送http的get、post请求

java发送http的get、post请求
java发送http的get、post请求

package wzh.Http;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import https://www.360docs.net/doc/1a10600087.html,.URL;

import https://www.360docs.net/doc/1a10600087.html,.URLConnection;

import java.util.List;

import java.util.Map;

public class HttpRequest {

/**

* 向指定URL发送GET方法的请求

*

* @param url

* 发送请求的URL

* @param param

* 请求参数,请求参数应该是name1=value1&name2=value2 的形式。

* @return URL 所代表远程资源的响应结果

*/

public static String sendGet(String url, String param) {

String result = "";

BufferedReader in = null;

try {

String urlNameString = url + "?" + param;

URL realUrl = new URL(urlNameString);

// 打开和URL之间的连接

URLConnection connection = realUrl.openConnection();

// 设置通用的请求属性

connection.setRequestProperty("accept", "*/*");

connection.setRequestProperty("connection", "Keep-Alive");

connection.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

// 建立实际的连接

connection.connect();

// 获取所有响应头字段

Map> map = connection.getHeaderFields();

// 遍历所有的响应头字段

for (String key : map.keySet()) {

System.out.println(key + "--->" + map.get(key));

}

// 定义BufferedReader输入流来读取URL的响应

in = new BufferedReader(new InputStreamReader(

connection.getInputStream()));

String line;

while ((line = in.readLine()) != null) {

result += line;

}

} catch (Exception e) {

System.out.println("发送GET请求出现异常!" + e);

e.printStackTrace();

}

// 使用finally块来关闭输入流

finally {

try {

if (in != null) {

in.close();

}

} catch (Exception e2) {

e2.printStackTrace();

}

}

return result;

}

/**

* 向指定URL 发送POST方法的请求

*

* @param url

* 发送请求的URL

* @param param

* 请求参数,请求参数应该是name1=value1&name2=value2 的形式。* @return 所代表远程资源的响应结果

*/

public static String sendPost(String url, String param) {

PrintWriter out = null;

BufferedReader in = null;

String result = "";

try {

URL realUrl = new URL(url);

// 打开和URL之间的连接

URLConnection conn = realUrl.openConnection();

// 设置通用的请求属性

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

// 发送POST请求必须设置如下两行

conn.setDoOutput(true);

conn.setDoInput(true);

// 获取URLConnection对象对应的输出流

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

// 发送请求参数

out.print(param);

// flush输出流的缓冲

out.flush();

// 定义BufferedReader输入流来读取URL的响应

in = new BufferedReader(

new InputStreamReader(conn.getInputStream()));

String line;

while ((line = in.readLine()) != null) {

result += line;

}

} catch (Exception e) {

System.out.println("发送POST 请求出现异常!"+e);

e.printStackTrace();

}

//使用finally块来关闭输出流、输入流

finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}

catch(IOException ex){

ex.printStackTrace();

}

}

return result;

}

}

HTTP POST GET 本质区别详解

HTTP POST GET 本质区别详解 一原理区别 一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删 4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息(个人认为这是GET和POST 的本质区别,也是协议设计者的本意,其它区别都是具体表现形式的差异 )。 根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。 1.所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。 * 注意:这里安全的含义仅仅是指是非修改信息。 2.幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下幂等这个概念: 幂等(idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。 幂等有以下几种定义: 对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a) = abs(abs(a)) 。 对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即max(x,x) = x 。 看完上述解释后,应该可以理解GET幂等的含义了。 但在实际应用中,以上2条规定并没有这么严格。引用别人文章的例子:比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。从根本上说,如果目标是当用户打开一个链接时,他可以确信从自身的角度来看没有改变资源即可。

浅谈HTTP中Get与Post的区别

两种最常用的 HTTP 方法是:GET 和 POST
什么是 HTTP?
超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。 HTTP 的工作方式是客户机与服务器之间的请求-应答协议。 web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。 举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含 关于请求的状态信息以及可能被请求的内容。
两种 HTTP 请求方法:GET 和 POST
在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。 ? GET - 从指定的资源请求数据。 ? POST - 向指定的资源提交要被处理的数据
GET 方法
请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:
/test/demo_form.asp?name1=value1&name2=value2
有关 GET 请求的其他一些注释:
? ? ? ? ? ?
GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET 请求不应在处理敏感数据时使用 GET 请求有长度限制 GET 请求只应当用于取回数据
POST 方法
请注意,查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:
POST /test/demo_form.asp HTTP/1.1 Host: https://www.360docs.net/doc/1a10600087.html, name1=value1&name2=value2

HTTP-get-post-soap比较

在https://www.360docs.net/doc/1a10600087.html, 中,XML Web Service支持三种协议来与用户交流数据。这三种协议分别是: 1.SOAP:Simple Object Access Protocol 2.HTTP-GET 3.HTTP-POST 1.首先我们先来理解一下这三者的大概定义。 在这三种协议中,SOAP是XML Web Service最常用到的连接协议。与HTTP相比,SOAP显的更为复杂,但却拥有更强的接受能力。SOAP是一种以XML为基础的协议,它提供一种将数据打包(Packaging)和编码(Encoding)的方法,以用于网络的数据传输。任意一个用户都可以使用SOAP协议与任何一个XML Web Service进行通信,甚至于说这个XML Web Service不是建立在.NET 平台上的,比如说Java的,我们都可以利用SOAP来进行数据传输。因此可见,SOAP也是Language Independent.(语言独立性) HTTP(Hypertext Transfer Protocol) 已经是众所周知的协议了,它是XML Web Service数据传输的标准,这包括了在使用SOAP传输数据的时候。HTTP将SOAP 消息压缩,然后以它的形式进行网络传输。然而当我们谈及在XML Web Service 下使用HTTP-GET和HTTP-POST的时候,我们实事上在谈有关单独使用HTTP调用XML Web Service中的方法的能力,这里我说的单独使用,指的是不使用SOAP。 在HTTP中,GET 和POST并不是一种协议,它们是可以用来与Web Service交互的几种方法中的其中二种。然而,这二种方法的传送参数和数据的能力使它们变成了一种简单的,非常适合用来调用XML Web Service的工具。 2.HTTP-GET 和HTTP-POST 的比较 这二者最大的区别在于数据是如何与要求的消息捆绑在一起的。 HTTP-GET的处理特征如下: 。将数据添加到URL 。利用一个问号(”?”)代表URL地址的结尾与数据的开端。 。每一个数据的元素以名称/值 (name/value) 的形式出现。 。利用一个分号(“;”)来区分多个数据元素。 HTTP-POST的处理特征如下:

HTTP请求方式之POST请求

HTTP 请求方式之POST 请求 在HTTP 请求消息中,请求方式有GET 、POST 、HEAD 、OPTIONS 、DELETE 、TRACE 、PUT 和CONNECT 八种。而在以后们最常用的有两种请求方式:POST 请求、GET 请求。这两种请求方式所对应的请求协议内容略有不同, 在上一节的HTTP 请求协议中,我们已经了解了GET 请求方式的请求信息,下面我们来学习Post 请求。 1.POST 请求 我们在浏览器地址栏上直接输入网址访问资源,这种请求方式是GET 请求,超链接请求也属于GET 请求,下面我们要演示的是POST 请求: (1)创建一个web 应用,名称为Example04,并在该应用中的WebRoot 目录下新建一个form.html 文件。详情请见Post 请求案例详解。点击此处 Example04.zip 下载Examplie04。主要 代码如例1-1所示: 例1-1form.html

用户名:
密码:
(2)将Example04发布到Tomcat 中,启动Tomcat 服务器。在浏览器端地址栏上输入http://localhost:8080/Example04/form.html ,并使用HttpWatch 进行抓包,如图1-1所示: 图1-1访问form.html 填写用户名:zhangsan 填写密码:123点击提交点击提交之前,先点击Clear 选项,清理一下

XMLHttpRequest[GET和Post]详解

【XMLHttpRequest】 Ajax-Post() document.getElementById("Confirm").onclick = function() { //debugger; //return ValiTitle() && ValiMatter(); //使用Ajax技术; if (ValiTitle() && ValiMatter()) { //验证之后禁用按钮; this.disabled = true; //创建XMLHttpRequest对象; var xhr = new XMLHttpRequest(); //使用open("post","Append.aspx")方法,采用Post方法传值传递给Append.aspx页面; xhr.open("post", "append.aspx"); //使用post发放传旨的时候在open()方法之后设置setRequsetHeader("Content-Type","application/x-www-form-urlencoded") xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //增加事件侦听onreadystatechange<-当读取状态发生变化的时候; xhr.onreadystatechange = function() { //读取状态为4的时候 if (xhr.readyState == 4) { alert(xhr.responseText); //提交数据之后form中数据清空,按钮可用; document.getElementById("Myform").reset(); document.getElementById("Confirm").disabled = false; } } //结束用send()相应setRequsetHeader的参数; xhr.send("Title=" + encodeURIComponent(document.getElementById("Title").value) + "&Matter=" + encodeURIComponent(document.getElementById("Matter").value)); } return false; } Ajax-Get() document.getElementById("Confirm").onclick = function() { var XHR = new XMLHttpRequest(); XHR.open("get", "From.aspx?ID=" + document.getElementById("ID").value);//默认为true; 异步的意思 XHR.onreadystatechange = function() { if (XHR.readyState == 4) { if (XHR.status == 200) { //alert(XHR.responseText); var str = XHR.responseText; var arr = str.split(','); //document.getElementById().innerHTML=arr[]; //调用函数; dispost(responseText); } } } XHR.send(null); return false; } 【Ajax】 =参考【XMLHttpRequest手册】 JS URL传值