`
liu_jiaqiang
  • 浏览: 20717 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 使用 URLConnection 模拟 Http Get和Post 提交

    博客分类:
  • java
 
阅读更多

1、URLConnectionHelper

001 package com.hcm.rulconnetion.utils;
002  
003 import java.io.BufferedReader;
004 import java.io.IOException;
005 import java.io.InputStreamReader;
006 import java.io.PrintWriter;
007 import java.net.URL;
008 import java.net.URLConnection;
009 import java.util.List;
010 import java.util.Map;
011  
012 public class URLConnectionHelper {
013  
014     /**
015      * 向指定URL发送GET方法的请求
016      *
017      * @param url
018      *            发送请求的URL
019      * @param params
020      *            请求参数,请求参数应该是name1=value1&name2=value2的形式。
021      * @return URL所代表远程资源的响应
022      */
023     public static String sendGet(String url, String params) {
024         String result = "";
025         BufferedReader in = null;
026         try {
027             String urlName = url + "?" + params;
028             URL realUrl = new URL(urlName);
029             // 打开和URL之间的连接
030             URLConnection conn = realUrl.openConnection();
031             // 设置通用的请求属性
032             conn.setRequestProperty("accept", "*/*");
033             conn.setRequestProperty("connection", "Keep-Alive");
034             conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
035  
036             // 建立实际的连接
037             conn.connect();
038             // 获取所有响应头字段
039  
040             Map<String, List<String>> map = conn.getHeaderFields();
041             // 遍历所有的响应头字段
042             for (String key : map.keySet()) {
043                 System.out.println(key + "--->" + map.get(key));
044             }
045  
046             // 定义BufferedReader输入流来读取URL的响应
047             in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
048             String line;
049             while ((line = in.readLine()) != null) {
050                 result += "\n" + line;
051             }
052         } catch (Exception e) {
053             System.out.println("发送GET请求出现异常!" + e);
054             e.printStackTrace();
055         }
056         // 使用finally块来关闭输入流
057         finally {
058             try {
059                 if (in != null) {
060                     in.close();
061                 }
062             } catch (IOException ex) {
063                 ex.printStackTrace();
064             }
065         }
066         return result;
067     }
068  
069     /**
070      * 向指定URL发送POST方法的请求
071      *
072      * @param url
073      *            发送请求的URL
074      * @param params
075      *            请求参数,请求参数应该是name1=value1&name2=value2的形式。
076      * @return URL所代表远程资源的响应
077      */
078     public static String sendPost(String url, String params) {
079         PrintWriter out = null;
080         BufferedReader in = null;
081         String result = "";
082         try {
083             URL realUrl = new URL(url);
084             // 打开和URL之间的连接
085             URLConnection conn = realUrl.openConnection();
086             // 设置通用的请求属性
087             conn.setRequestProperty("accept", "*/*");
088             conn.setRequestProperty("connection", "Keep-Alive");
089             conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
090  
091             // 发送POST请求必须设置如下两行
092             conn.setDoOutput(true);
093             conn.setDoInput(true);
094             // 获取URLConnection对象对应的输出流
095             out = new PrintWriter(conn.getOutputStream());
096             // 发送请求参数
097             out.print(params);
098             // flush输出流的缓冲
099             out.flush();
100  
101             // 定义BufferedReader输入流来读取URL的响应
102             in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
103             String line;
104             while ((line = in.readLine()) != null) {
105                 result += "\n" + line;
106             }
107         } catch (Exception e) {
108             System.out.println("发送POST请求出现异常!" + e);
109             e.printStackTrace();
110         }
111         // 使用finally块来关闭输出流、输入流
112         finally {
113             try {
114                 if (out != null) {
115                     out.close();
116                 }
117                 if (in != null) {
118                     in.close();
119                 }
120             } catch (IOException ex) {
121                 ex.printStackTrace();
122             }
123         }
124         return result;
125     }
126 }

2、测试sendGet方法

1 @Test
2 public void testSendGet<span></span>() {
3     String url = "http://127.0.0.1:8086/web_test/a.jsp";
4     String str = URLConnectionHelper.sendGet(url, null);
5     System.out.println(str);
6 }

3、测试sendPost方法

1 @Test
2 public void testSendPost() {
3     String url = "http://127.0.0.1:8086/web_test/UserLoginServlet";
4     String params = "username=admin&password=123456";
5     String str = URLConnectionHelper.sendPost(url, params);
6     System.out.println(str);
7

}

分享到:
评论

相关推荐

    java URLConnection总结(经典易懂)

    通过以上总结,你可以更好地理解如何使用Java URLConnection进行网络通信,包括发送GET和POST请求,以及处理登录和其他需要发送数据的情况。在实际项目中,结合具体的业务需求,这些知识将有助于实现高效且安全的...

    java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

    `HttpURLConnection`是Java标准库提供的一种轻量级的HTTP客户端,它允许我们在后台代码中发送GET和POST请求。本篇文章将深入讲解如何使用`HttpURLConnection`类来模拟浏览器请求,并通过实例展示其在接口调用中的...

    Java模拟HTTP Get Post请求 轻松实现校园BBS自动回帖

    对于复杂的表单提交,可能需要使用`java.net.URLConnection`的`setDoOutput(true)`和`setDoInput(true)`方法,以及`java.io.OutputStreamWriter`来写入POST数据。 总的来说,Java模拟HTTP Get和Post请求涉及到网络...

    java发送http的get、post请求实现代码

    下面将详细讲解如何使用Java实现HTTP GET和POST请求。 首先,我们来看GET请求。GET请求是HTTP协议中最简单的一种,它用于从服务器获取资源。在提供的代码片段中,`sendGet` 方法接收两个参数:`url` 和 `param`。`...

    使用UrlConnection实现后台模拟http请求的简单实例

    本实例将详细讲解如何使用`URLConnection`来发送POST或GET请求。 1. **初始化请求数据** 首先,我们需要准备请求的数据。在给定的代码示例中,数据被存储在一个`Map, String&gt;`中,其中键是参数名,值是参数值。...

    客户端页面截取!URLCONNECTION

    在Java编程语言中,我们可以使用多种方法来实现这一功能,其中URLConnection是Java标准库提供的一种网络通信接口,虽然HttpClient更为流行,但URLConnection在某些场景下依然具有实用性。下面我们将深入探讨...

    Android使用URLConnection提交请求的实现

    在Android开发中,使用URLConnection提交网络请求是一种常见的做法,它提供了对HTTP协议的基本支持,包括GET和POST方式。以下是对这个知识点的详细说明: 首先,要实现一个网络请求,我们需要创建一个URL对象,该...

    java实现多次HttpURLConnection共享session

    在Java编程中,HTTPURLConnection是Java标准库提供的一种用于处理HTTP连接的类,它允许我们发送HTTP请求并接收响应。然而,HTTP协议本身是无状态的,这意味着每次请求都是独立的,不会记住之前的交互,这对于需要...

    JavaHTTP协议实现

    在Java中,我们可以使用`java.net.URL`和`java.net.URLConnection`类来实现GET请求。以下是一个简单的示例,展示了如何使用GET方法下载服务器上的图片: ```java import java.io.InputStream; import java.net.URL;...

    JAVA通过HttpURLConnection 上传和下载文件的方法

    JAVA通过HttpURLConnection上传和下载文件的方法 JAVA通过HttpURLConnection上传和下载文件的方法是非常有实用价值的,需要的朋友可以参考下。HttpURLConnection是一个Java类,用于从网络中读取数据或向网络中写入...

    运用java实现简单的浏览器功能

    在Java中,我们可以使用`java.net.URL`类来处理URL,以及`java.net.HttpURLConnection`或`java.net.URLConnection`类来发起HTTP请求。这些类允许我们连接到服务器,发送GET请求,接收响应,并读取返回的数据。 1. *...

    JAVA浏览器小实例

    3. **HTTP协议**:了解HTTP协议的基本原理,如GET和POST请求,HTTP头的设置等,这对于实现浏览器发送请求到服务器至关重要。 4. **IO流**:JAVA中的输入输出流(IO流)用于数据的读取和写入,如在接收服务器响应时...

    Java+爬虫+爬取图片+完整案例+源码

    它允许我们模拟浏览器行为,发送GET、POST等各种HTTP方法的请求。在图片爬虫中,我们通常使用GET请求获取网页内容。例如,你可以创建一个`CloseableHttpClient`实例,然后使用`HttpGet`构造请求URL,并通过`execute`...

    JAVA系统连接雅虎的

    了解HTTP请求方法(GET、POST)以及请求头和响应头的概念是必要的。Java的`HttpURLConnection` 类可以方便地发送HTTP请求。 3. **数据抓取**:雅虎财经的股票信息通常以HTML或JSON格式存在。我们可以使用`java.io....

    java模拟ajax访问另一个项目的controller代码实例

    下面的代码示例展示了如何使用Java的URLConnection类来发送GET请求到另一个项目的Controller: ```java package com.ultrapower.zq.iscloud.web.boc.api.utils; import java.io.BufferedReader; import java.io....

    Java爬虫汽车之家图片

    - **请求网页**:使用HttpClient发送GET或POST请求获取HTML源码。 - **HTML解析**:使用Jsoup或其他解析库解析HTML,找到图片链接。 - **下载图片**:根据图片链接,通过HttpClient或Java的URLConnection下载图片...

    java浏览器

    开发者需要理解HTTP的基本概念,如GET、POST请求方法,HTTP头和状态码。 5. **HTML解析**:加载的网页内容通常为HTML,开发者需要解析HTML文档以提取标题、链接、图片等信息。可以使用Java的DOM解析库,如`javax....

    java程序-网络浏览器

    Java程序-网络浏览器是使用Java语言开发的一种应用程序,它的主要功能是模拟并实现网络浏览的功能。在Java中,实现这样的程序通常涉及到多个关键知识点,包括网络编程、HTTP协议理解、HTML解析以及用户界面设计等。 ...

Global site tag (gtag.js) - Google Analytics