向Web站点发送GET请求,POST请求,并从Web站点取得相应数据示例

package cn.internet.demo;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class GetPostTest {

	/**
	 * 向指定URL发送GET方式请求
	 */
	public static String sendGet(String url,String param){
		String result = "";
		String urlName = url+"?"+param;
		try {
			URL realUrl = new URL(urlName);
			// 打开联接
			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)");

			// 建立实际的联接
			conn.connect();			

			System.out.println("文件大小:"+conn.getContentLength());
			// 获取所有的相应头字段
			Map<String, List<String>> map = conn.getHeaderFields();
			// 遍历所有的相应头字段
			for (String key:map.keySet()) {
				System.out.println(key+"--->"+map.get(key));
			}

			// 定义 BufferedReader输入流来读取URL的相应
			try(BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"))){
				String line;
				while ((line = in.readLine())!=null) {
					result += "\n"+line;
				}
			}
		} catch (Exception e) {
			System.out.println("发送Get请求出现异常!");
			e.printStackTrace();
		}
		return result;
	}

	public static String sendPost(String url,String param){
		String result = "";
		try {
			URL realUrl = new 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对象对应的输出流
			try(PrintWriter out = new PrintWriter(conn.getOutputStream())){
				out.print(param);	// 发送请求参数
				out.flush();		// flush输出流的缓冲
			}
			// 定义 BufferedReader输入流来读取URL的相应
			try(BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"))){
				String line;
				while ((line = in.readLine())!=null) {
					result += "\n"+line;
				}
			}

			// 获取所有的相应头字段
			Map<String, List<String>> map = conn.getHeaderFields();
			// 遍历所有的相应头字段
			for (String key:map.keySet()) {
				System.out.println(key+"--->"+map.get(key));
			}

		} catch (Exception e) {
			System.out.println("发送Get请求出现异常!");
			e.printStackTrace();
		}
		return result;
	}

	public static void main(String[] args) {
//		String s = GetPostTest.sendGet("http://localhost:8080/NetWork_Code/index.jsp", "name=rapido&pwd=liying5201314");
//		System.out.println("get: "+s);

		String s = GetPostTest.sendGet("http://localhost:8080/NetWork_Code/data.json", null);
		System.out.println("get: "+s);

//		String s2 = GetPostTest.sendPost("http://localhost:8080/NetWork_Code/index.jsp", "name=rapido&pwd=liying5201314");
//		System.out.println("post: "+s2);
	}
}

在Web应用程序中测试一个index.jsp页面联接

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String name = request.getParameter("name");
	String pwd = request.getParameter("pwd");

	System.out.println("name:" + name + ",pwd:" + pwd);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
	This is my JSP page.
	<h1 style="color:red">用户名:<%=name %>, 密码:<%=pwd %></h1>
	<br>
</body>
</html>

启动服务后,执行main方法返回以下类型数据

文件大小:539
null--->[HTTP/1.1 200 OK]
Date--->[Sat, 30 May 2015 14:57:58 GMT]
Content-Length--->[539]
Set-Cookie--->[JSESSIONID=CD19ECBE035FDC1287CE22AD5CEF6DBA; Path=/NetWork_Code/; HttpOnly]
Content-Type--->[text/html;charset=UTF-8]
Server--->[Apache-Coyote/1.1]
get: 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
	This is my JSP page.
	<h1 style="color:red">用户名:rapido, 密码:liying5201314</h1>
	<br>
</body>
</html>

时间: 2024-12-27 23:33:37

向Web站点发送GET请求,POST请求,并从Web站点取得相应数据示例的相关文章

Golang Web编程的Get和Post请求发送与解析

本文的是一篇入门文章,通过一个简单的例子介绍Golang的Web编程主要用到的技术. 文章结构包括: Client-Get 请求 Client-Post 请求 Server 处理 Get 和 Post 数据 在数据的封装中,我们部分采用了json,因而本文也涉及到Golang中json的编码和解码. 一.Client-Get package main import ( "fmt" "net/url" "net/http" "io/iou

利用URLConnection来发送POST和GET请求

URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接.程序可以通过URLConnection实例向该URL发送请求.读取URL引用的资源.通常创建一个和 URL 的连接,并发送请求.读取此 URL 引用的资源需要如下几个步骤:(1)通过调用URL对象openConnection()方法来创建URLConnection对象.(2)设置URLConnection的参数和普通请求属性.(3)如果只是发送GET方式请求,使用c

在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求

通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需要获取认证信息(如Cookie),所以返回的是HttpWebResponse对象,有了返回的HttpWebResponse实例,可以获取登录过程中返回的会话信息,也可以获取响应流. 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text;

【转】在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求

http://zhoufoxcn.blog.51cto.com/792419/561934 这个需求来自于我最近练手的一个项目,在项目中我需要将一些自己发表的和收藏整理的网文集中到一个地方存放,如果全部采用手工操作工作量大而且繁琐,因此周公决定利用C#来实现.在很多地方都需要验证用户身份才可以进行下一步操作,这就免不了POST请求来登录,在实际过程中发现有些网站登录是HTTPS形式的,在解决过程中遇到了一些小问题,现在跟大家分享. 通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpW

Web容器自己主动对HTTP请求中參数进行URLDecode处理

这篇文章转载自 : Web容器自己主动对HTTP请求中參数进行URLDecode处理 如题.在Java中或许非常多人都没有注意到当我们发送一个http请求时,假设附带的參数被URLEncode之后,到达web容器之后,开发人员获取到的參数值会自己主动变成了encode之前的值.这是一个非常好的特点,开发人员全然能够忽略http的參数是否须要decode这样的事,可是decode究竟是在什么发生的呢? 第一步就是从request.getParameter()方法下手,可是ServletReques

基于.Net Framework 4.0 Web API开发(5):ASP.NET Web APIs AJAX 跨域请求解决办法(CORS实现)

概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题,特别各种APP万花齐放的今天,API的跨域请求是不能避免的. 在默认情况下,为了防止CSRF跨站的伪造攻击(或者是 javascript的同源策略(Same-Origin Policy)),一个网页从另外一个域获取数据时就会收到限制.有一些方法可以突破这个限制,那就是大家熟知的JSONP, 当然这只是

(转) 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求

转自:http://blog.csdn.net/zhoufoxcn/article/details/6404236 通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需要获取认证信息(如Cookie),所以返回的是HttpWebResponse对象,有了返回的HttpWebResponse实例,可以获取登录过程中返回的会话信息,也可以获取响应流. 代码如下: [c-sharp] view plaincopy us

Http学习之使用HttpURLConnection发送post和get请求(3)

使用HttpURLConnection发送post和get请求 但我们常常会碰到这样一种情况: 通过HttpURLConnection来模拟模拟用户登录Web服务器,服务器使用cookie进行用户认证.在模拟登录时,Post表单数据后可以正确登录(登陆成功时会response一个cookie,然后redirect到main page,不成功则redirect到login page),但是在使用HttpURLConnection再次连接服务器其他页面(或者即使是当前的response里是redir

(转载)在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求

转自http://blog.csdn.net/zhoufoxcn/article/details/6404236 这个需求来自于我最近练手的一个项目,在项目中我需要将一些自己发表的和收藏整理的网文集中到一个地方存放,如果全部采用手工操作工作量大而且繁琐,因此周公决定利用C#来实现.在很多地方都需要验证用户身份才可以进行下一步操作,这就免不了POST请求来登录,在实际过程中发现有些网站登录是HTTPS形式的,在解决过程中遇到了一些小问题,现在跟大家分享. 通用辅助类 下面是我编写的一个辅助类,在这

web开发的基础知识:http请求

引用自:http://blog.csdn.net/yefan2222/article/details/6198098 http://baike.baidu.com/view/1628025.htm?fromtitle=http&fromid=243074&type=syn 1.HTTP协议 Internate的基本协议是TCP/IP(传输控制协议和网际协议).而目前使用的FTP,HTTP都是建立在TCP/IP上的应用层协议.不同的协议对应不同的应用.而HTTP协议是Web应用所使用的主要协