- 浏览: 895354 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
转http://fhd001.iteye.com/blog/732729
HttpURLConnection为javaAPI提供的一种Rest访问的方式。其支持对Post,Delete,Get,Put等方式的访问。
以下为对于HttpURLConnection对Post等方式访问的一段代码。
view plaincopy to clipboardprint?
1. package com.sw.study.urlConnection;
2.
3. import java.io.BufferedReader;
4. import java.io.InputStreamReader;
5. import java.io.OutputStream;
6. import java.net.HttpURLConnection;
7. import java.net.URL;
8. import java.net.URLConnection;
9. import java.util.HashMap;
10. import java.util.Map;
11.
12. public class URLConnectionUtil {
13.
14. private static final String SERVLET_POST = "POST" ;
15. private static final String SERVLET_GET = "GET" ;
16. private static final String SERVLET_DELETE = "DELETE" ;
17. private static final String SERVLET_PUT = "PUT" ;
18.
19. private static String prepareParam(Map<String,Object> paramMap){
20. StringBuffer sb = new StringBuffer();
21. if(paramMap.isEmpty()){
22. return "" ;
23. }else{
24. for(String key: paramMap.keySet()){
25. String value = (String)paramMap.get(key);
26. if(sb.length()<1){
27. sb.append(key).append("=").append(value);
28. }else{
29. sb.append("&").append(key).append("=").append(value);
30. }
31. }
32. return sb.toString();
33. }
34. }
35.
36. public static void doPost(String urlStr,Map<String,Object> paramMap ) throws Exception{
37. URL url = new URL(urlStr);
38. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
39. conn.setRequestMethod(SERVLET_POST);
40. String paramStr = prepareParam(paramMap);
41. conn.setDoInput(true);
42. conn.setDoOutput(true);
43. OutputStream os = conn.getOutputStream();
44. os.write(paramStr.toString().getBytes("utf-8"));
45. os.close();
46.
47. BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
48. String line ;
49. String result ="";
50. while( (line =br.readLine()) != null ){
51. result += "\n"+line;
52. }
53. System.out.println(result);
54. br.close();
55.
56. }
57.
58. public static void doGet(String urlStr,Map<String,Object> paramMap ) throws Exception{
59. String paramStr = prepareParam(paramMap);
60. if(paramStr == null || paramStr.trim().length()<1){
61.
62. }else{
63. urlStr +="?"+paramStr;
64. }
65. System.out.println(urlStr);
66. URL url = new URL(urlStr);
67. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
68. conn.setRequestMethod(SERVLET_PUT);
69. conn.setRequestProperty("Content-Type","text/html; charset=UTF-8");
70.
71. conn.connect();
72. BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
73. String line ;
74. String result ="";
75. while( (line =br.readLine()) != null ){
76. result += "\n"+line;
77. }
78. System.out.println(result);
79. br.close();
80. }
81.
82. public static void doPut(String urlStr,Map<String,Object> paramMap) throws Exception{
83. URL url = new URL(urlStr);
84. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
85. conn.setRequestMethod(SERVLET_PUT);
86. String paramStr = prepareParam(paramMap);
87. conn.setDoInput(true);
88. conn.setDoOutput(true);
89. OutputStream os = conn.getOutputStream();
90. os.write(paramStr.toString().getBytes("utf-8"));
91. os.close();
92.
93. BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
94. String line ;
95. String result ="";
96. while( (line =br.readLine()) != null ){
97. result += "\n"+line;
98. }
99. System.out.println(result);
100. br.close();
101.
102. }
103.
104. public static void doDelete(String urlStr,Map<String,Object> paramMap) throws Exception{
105. String paramStr = prepareParam(paramMap);
106. if(paramStr == null || paramStr.trim().length()<1){
107.
108. }else{
109. urlStr +="?"+paramStr;
110. }
111. System.out.println(urlStr);
112. URL url = new URL(urlStr);
113. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
114. conn.setDoOutput(true);
115. conn.setRequestMethod(SERVLET_DELETE);
116. //屏蔽掉的代码是错误的,java.net.ProtocolException: HTTP method DELETE doesn't support output
117. /* OutputStream os = conn.getOutputStream();
118. os.write(paramStr.toString().getBytes("utf-8"));
119. os.close(); */
120.
121. if(conn.getResponseCode() ==200){
122. System.out.println("成功");
123. }else{
124. System.out.println(conn.getResponseCode());
125. }
126. }
127.
128. public static void main(String[] args) throws Exception{
129. String urlStr = "http://localhost:8080/SwTest/ReceiveDataServlet";
130. Map<String,Object> map = new HashMap<String,Object>();
131. map.put("username","张三");
132. map.put("password","88888");
133. // URLConnectionUtil.doGet(urlStr, map);
134. // URLConnectionUtil.doPost(urlStr, map);
135. // URLConnectionUtil.doPut(urlStr, map);
136. URLConnectionUtil.doDelete(urlStr, map);
137.
138. }
139.
140.
141. }
方法中是存在重复的。有些方法是可以通过参数的改变来达到统一,但是那样的做法对于程序的扩展性会有很大的局限性。
还是对于每一种方式提供一个单独的方法进行访问比较好。
在Servlet端,获取参数可以通过
request.getInputStream,及request.getParamter来进行。
其中,当Rest访问传入参数是通过conn的outputStream来进行的,可以通过request.getInputStream来进行参数获取(Post方式可通用);
当以url?key=value方法传递参数时,可以通过request.getParamter来进行参数获取。(Post方式可通用)
其中request.getInputStream和request.getParamter两种方式不能同时出现。当request.getParamter运行的过程,也是输入流的读取过程。当输入流读取完成后,再次调用时无效的。
附上Servlet端程序
view plaincopy to clipboardprint?
1. package com.sw.servlet;
2.
3. import java.io.BufferedReader;
4. import java.io.IOException;
5. import java.io.InputStreamReader;
6. import java.io.OutputStream;
7.
8. import javax.servlet.ServletException;
9. import javax.servlet.ServletInputStream;
10. import javax.servlet.http.HttpServlet;
11. import javax.servlet.http.HttpServletRequest;
12. import javax.servlet.http.HttpServletResponse;
13.
14. /**
15. * Servlet implementation class ReceiveDataServlet
16. */
17. public class ReceiveDataServlet extends HttpServlet {
18. private static final long serialVersionUID = 1L;
19.
20. /**
21. * @see HttpServlet#HttpServlet()
22. */
23. public ReceiveDataServlet() {
24. super();
25. // TODO Auto-generated constructor stub
26. }
27.
28. /**
29. * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
30. */
31. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
32. System.out.println("----------get--------------");
33. String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");
34. String password = new String(request.getParameter("password").getBytes("iso-8859-1"),"utf-8");
35. System.out.println(username);
36. System.out.println(password);
37. OutputStream os = response.getOutputStream();
38. os.write("get".getBytes("utf-8"));
39. }
40.
41. /**
42. * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
43. */
44. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
45. System.out.println("----------post--------------");
46. BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream()));
47. String line = null;
48. StringBuilder sb = new StringBuilder();
49. while((line = br.readLine())!=null){
50. sb.append(line);
51. }
52. System.out.println(sb.toString());
53. br.close();
54. /* String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");
55. String password = new String(request.getParameter("password").getBytes("iso-8859-1"),"utf-8");
56. System.out.println(username);
57. System.out.println(password);
58. */ OutputStream os = response.getOutputStream();
59. os.write("post".getBytes("utf-8"));
60. }
61.
62. @Override
63. protected void doDelete(HttpServletRequest request, HttpServletResponse response)
64. throws ServletException, IOException {
65. System.out.println("----------delete--------------");
66. String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");
67. String password = new String(request.getParameter("password").getBytes("iso-8859-1"),"utf-8");
68. System.out.println(username);
69. System.out.println(password);
70. OutputStream os = response.getOutputStream();
71. os.write("delete".getBytes("utf-8"));
72. }
73.
74. @Override
75. protected void doPut(HttpServletRequest request, HttpServletResponse response)
76. throws ServletException, IOException {
77. System.out.println("----------put--------------");
78.
79. /* BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream()));
80. String line = null;
81. StringBuilder sb = new StringBuilder();
82. while((line = br.readLine())!=null){
83. sb.append(line);
84. }
85. System.out.println(sb.toString());
86. br.close();*/
87.
88. String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");
89. String password = new String(request.getParameter("password").getBytes("iso-8859-1"),"utf-8");
90. System.out.println(username);
91. System.out.println(password);
92. OutputStream os = response.getOutputStream();
93. os.write("put".getBytes("utf-8"));
94. }
95.
发表评论
文章已被作者锁定,不允许评论。
-
java解决网站静态页面生成方案(源码)
2012-07-01 01:51 0提升网站性能的方式有很多,例如有效的使用缓存,生成静态页 ... -
Servlet映射的匹配原则,优先级
2012-06-08 22:45 1460一个元素用于映射一个已经注册的Servlet的一个对外访问 ... -
TOMCAT SESSION的持久化方法
2012-06-12 09:56 1309Tomcat5.5.12 实现Session持久化的配置: ... -
Servlet和filter的JAVAEE的配置
2012-06-05 22:52 893一、servlet容器对url的匹配过程: 当一个请求发送 ... -
tomcat 静态资源处理类DefaultServlet&Apache静态资源服务
2012-06-05 21:13 2338DefaultServlet是tomcat中用来处理静态资源和 ... -
如何获取搜索引擎的来源和其中的关键字
2011-08-30 21:39 1824在做商务E流量分析的时候,需要实现一个功能:如果访客是通过搜索 ... -
RequestDispatcher接口中的include()方法和forward()方法的区别
2011-04-19 15:34 1182请求转发中 RequestDispatcher 接口中的 in ... -
文件上传下载(oreilly之MultipartReques)
2011-04-10 22:36 1254上传篇代码片段: import com.oreill ... -
使用jstl还要在web.xml里面配一下
2011-01-30 11:26 1945悲剧,有人说是不用apac ... -
JAVA WEB学习笔记(五)-自定义JSP标签
2011-01-27 13:28 841一、基本概念:********** ... -
Filter拦截include方式的请求
2010-12-16 12:15 1017最近需要在项目中做一个缓存框架,通过插件方式加入,要求可以 ... -
<转>web.xml 中的listener、 filter、servlet 加载顺序及其详解
2010-12-10 22:45 926转载自 ailongni 最终编 ... -
web.xml里listener、filter和servlet加载顺序和详解(二)
2010-12-10 22:44 1248相应元素配置 1、Web应用图标:指出IDE和GUI工具用来 ... -
转】servlet中web.xml配置详解(转)
2010-12-10 22:42 888转载自 limpid1215 最终编辑 limpid121 ... -
Tomcat6中启用invoker心得
2010-10-26 08:31 1595今天下了看了一下示例,TOMCAT6中启用invoker 访问 ... -
el表达式不起作用的解决方案
2010-10-12 14:18 885关键字: el表达式不起作用 今天晚上学习SSH,发现一个el ... -
getOutputStream() has already been called for this response
2010-10-11 16:15 1275java.lang.IllegalStateException ... -
关于serveletContext.getRealPath()方法
2010-10-11 10:23 20491.关于request.getRealPath 问 ... -
采用application/vnd.ms-excel导出excel时修改文件名
2010-09-26 10:17 3938设置response属性,如下 response.se ... -
HttpServletResponse addHeader 与 setHeader 区别
2010-09-09 19:09 3888setHeader(name,value) :如果Header ...
相关推荐
本篇文章将深入探讨如何在Android中简单使用`HttpURLConnection`进行网络请求。 首先,了解`HttpURLConnection`的基本用法。在Android中,网络操作通常在子线程(非UI线程)中进行,以避免阻塞主线程导致应用无响应...
在本例中,我们将探讨如何使用`HttpURLConnection`来下载图片,这是一个基础但实用的网络编程任务。下面我们将详细介绍这个过程,并涉及到的相关知识点。 1. **HttpURLConnection简介**: `HttpURLConnection`是`...
1. **创建连接**:使用`URL`对象构造一个`HttpURLConnection`实例,通常会通过`openConnection()`方法来实现。例如: ```java URL url = new URL("http://yourserver.com/upload"); HttpURLConnection connection...
本主题将深入探讨如何使用HttpURLConnection进行Android与服务器的简单交互,以及相关的知识点。 **HttpURLConnection简介** HttpURLConnection是Java标准库中的一个类,它是基于HTTP协议实现的,可以用来发送HTTP...
### 使用HttpURLConnection发送短信 在Java开发中,通过网络接口实现短信发送是一种常见的应用场景,例如在用户注册、找回密码等场景下验证用户身份时。本文将详细介绍如何利用`HttpURLConnection`来实现短信发送...
本例子是关于如何将`AsyncTask`与`HttpURLConnection`结合,实现一个简单的网络请求。 `AsyncTask`是Android提供的轻量级异步任务框架,它允许开发者在后台线程执行耗时操作,并在主线程更新UI。`AsyncTask`包含三...
2. **设置请求方法**:默认情况下,`HttpURLConnection`会使用GET方法,但我们需要POST,所以需要调用`setRequestMethod("POST")`。 3. **允许输出**:POST请求需要向服务器发送数据,因此需要调用`setDoOutput...
1. **设置请求方法**:默认情况下,`HttpURLConnection`使用GET方法,但可以通过`setRequestMethod()`方法设置POST、PUT、DELETE等其他HTTP方法。 2. **设置请求头**:通过`setRequestProperty()`或`...
在Android开发中,...综上所述,这个示例涵盖了使用HTTPURLConnection进行网络通信的基本流程,XML数据的解析,以及AndroidX框架下的类组织和使用。开发者需要理解这些概念,并根据实际需求进行相应的扩展和优化。
本教程主要探讨如何使用HttpURLConnection来访问WebService。 首先,让我们理解什么是WebService。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的,可以被不同平台和编程语言之间进行交互的服务。它们通过...
本篇将深入讲解如何使用HTTPURLConnection获取服务器数据并进行JSON解析。 首先,我们需要理解HTTP的基础概念。HTTP(超文本传输协议)是一种应用层协议,用于在Web上交换数据。HTTPURLConnection类提供了创建和...
本篇文章将深入讲解如何使用`HttpURLConnection`类来模拟浏览器请求,并通过实例展示其在接口调用中的应用。 首先,`HttpURLConnection`是`java.net.URLConnection`的一个子类,用于处理HTTP协议。在使用`...
本教程将详细讲解如何使用HttpURLConnection实现单线程、多线程下载以及多线程续点下载。 **一、单线程下载** 单线程下载是最基础的下载方式,它通过一个连接获取服务器资源并写入本地文件。以下是一个简单的单...
以下是一个简单的示例,展示了如何使用HttpURLConnection发送GET请求: ```java URL url = new URL("http://your-web-service-url"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); ...
相较于其他网络库如OkHttp或Volley,`HttpURLConnection`更轻量级,适合小规模或者简单的网络请求。本教程将深入探讨如何使用`HttpURLConnection`在Android Studio中请求网络数据,包括文本和图片。 首先,我们需要...
本实例将重点讲解如何利用Java中的Socket和HttpURLConnection库来实现一个简单的网络爬虫。这两个类是Java标准库提供的基础网络通信工具,对于理解HTTP协议和网络编程具有重要意义。 首先,让我们了解Socket编程。...
然后调用`openConnection()`方法打开与该URL的连接,得到一个`URLConnection`对象,再将其类型转换为`HttpURLConnection`,以便使用HTTP特定的功能。 ```java URL url = new URL(...
而对于简单的项目或者对性能要求不高的场景,HttpURLConnection则足够使用。 2. OkHttp3的拦截器和缓存机制使得它在处理复杂的网络需求时更具优势,而HttpURLConnection的简洁性可能更适合初学者或者小规模项目。 ...
在Java编程中,`java.net.HttpURLConnection`是用于处理HTTP协议的基本类,它提供了一种与HTTP服务器通信的简单方式。下面将详细讲解如何使用`HttpURLConnection`进行网页内容获取、Cookie管理以及POST方式的数据...
本文将深入探讨HttpUrlConnection的使用、功能以及其在实际开发中的应用。 一、HttpUrlConnection简介 HttpUrlConnection是java.net.URL类的一个子类,提供了与URL建立连接并执行HTTP协议的方法。它支持多种HTTP...