2024年3月21日发(作者:)
向指定URL发送GET方法的请求(java)
2010-03-04 15:44
向指定URL发送GET方法的请求
2009-10-21 13:28
使用Java发送GET、POST请求
——节选自《疯狂Java讲义》
URL的openConnection()方法将返回一个URLConnection对象,该对象表示应
用程序和 URL 之间的通信链接。程序可以通过URLConnection实例向该URL发
送请求、读取URL引用的资源。
通常创建一个和 URL 的连接,并发送请求、读取此 URL 引用的资源需要如下
几个步骤:
(1)通过调用URL对象openConnection()方法来创建URLConnection对象。
(2)设置URLConnection的参数和普通请求属性。
(3)如果只是发送GET方式请求,使用connect方法建立和远程资源之间的实
际连接即可;如果需要发送POST方式的请求,需要获取URLConnection实例对
应的输出流来发送请求参数。
(4)远程资源变为可用,程序可以访问远程资源的头字段、或通过输入流读取
远程资源的数据。
在建立和远程资源的实际连接之前,程序可以通过如下方法来设置请求头字段:
qsetAllowUserInteraction:设置该URLConnection的allowUserInteraction
请求头字段的值。
qsetDoInput:设置该URLConnection的doInput请求头字段的值。
qsetDoOutput:设置该URLConnection的doOutput请求头字段的值。
qsetIfModifiedSince:设置该URLConnection的ifModifiedSince请求头字段
的值。
qsetUseCaches:设置该URLConnection的useCaches请求头字段的值。
除此之外,还可以使用如下方法来设置、或增加通用头字段:
qsetRequestProperty(String key, String value):设置该URLConnection的
key请求头字段的值为value。如下代码所示:
uestProperty("accept" , "*/*")
qaddRequestProperty(String key, String value):为该URLConnection的
key请求头字段的增加value值,该方法并不会覆盖原请求头字段的值,而是
将新值追加到原请求头字段中。
当远程资源可用之后,程序可以使用以下方法用于访问头字段和内容:
qObject getContent():获取该URLConnection的内容。
qString getHeaderField(String name):获取指定响应头字段的值。
qgetInputStream():返回该URLConnection对应的输入流,用于获取
URLConnection响应的内容。
qgetOutputStream():返回该URLConnection对应的输出流,用于向
URLConnection发送请求参数。
注意:如果既要使用输入流读取URLConnection响应的内容,也要使用输出流
发送请求参数,一定要先使用输出流,再使用输入流。
getHeaderField方法用于根据响应头字段来返回对应的值。而某些头字段由于
经常需要访问,所以Java提供了以下方法来访问特定响应头字段的值:
qgetContentEncoding:获取content-encoding响应头字段的值。
qgetContentLength:获取content-length响应头字段的值。
qgetContentType:获取content-type响应头字段的值。
qgetDate():获取date响应头字段的值。
qgetExpiration():获取expires响应头字段的值。
qgetLastModified():获取last-modified响应头字段的值。
下面程序示范了如何向Web站点发送GET请求、POST请求,并从Web站点取得
响应的示例。
public class TestGetPost
{
/**
* 向指定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 urlName = url + "?" + param;
URL realUrl = new URL(urlName);
//打开和URL之间的连接
URLConnection conn = nnection();
//设置通用的请求属性
uestProperty("accept", "*/*");
uestProperty("connection", "Keep-Alive");
uestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
//建立实际的连接
t();
//获取所有响应头字段
Map
//遍历所有的响应头字段
for (String key : ())
{
n(key + "--->" + (key));


发布评论