- 浏览: 361131 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (176)
- struts2 (4)
- javascript (9)
- database (11)
- hibernate (11)
- java (36)
- CSS (1)
- wap (8)
- html (5)
- spring (3)
- 操作系统 (9)
- xml (0)
- eclipse/myeclipse (6)
- freemarker (2)
- jsp+servlet (4)
- fckeditor (1)
- Linux (12)
- tomcat (4)
- SNMP (2)
- Loadrunner (1)
- php (0)
- 版本控制 (1)
- android (3)
- pki (7)
- jquery (4)
- webservice (4)
- ipad (1)
- 开发工具 (1)
- jslt (1)
- 连接池 (6)
- javaApi (1)
- 学习笔记 (6)
- eclipse (2)
最新评论
-
宋建勇:
nice
keytool详解 -
1122334455aabb:
java int,byte、char之间的相互转化,更多内容参 ...
java中byte 与16进制字符相互转换 -
01jiangwei01:
CA[i >>> 18 & 0x3f ...
使用JAVA数字证书做数字签名认证 -
sjp524617477:
good
keytool详解 -
whlngn:
输出结果我只想取汉字,而不要后面的数字,应该如何实现,求回答
配置paoding analysis
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.
96. }
程序中对于request.getInputStream和getParameter的获取方式可能说明的会多少有些问题,我也是通过几组测试后得出的结论。肯定有我没有测试到得。如果有问题,请指出,我会再看到评论后进行测试,修改。
另外,Apache的HttpClient非常好。封装的详细。在我的工作中也用到过,在以后会对于HttpClient进行有些单独的程序笔记。
这里HttpUrlConnection是同事在别的项目中用到的,用法比较简单,我大体给他简单讲解了一下,简明扼要,功能完备,还是很方便,
所以在这里记下来,留个笔记吧。
发表评论
-
常用排序算法小记
2012-06-29 07:59 965转自:http://easense2009.iteye.com ... -
抽象类与接口
2012-06-07 13:47 809java中只可以继承一个类却可以继承多个接口。一个抽象 ... -
Java编程中“为了性能”尽量要做到的一些地方
2012-05-18 09:36 654最近的机器内存又爆满了,除了新增机器内存外,还应该好好revi ... -
Runtime.getRuntime().exec(...)使用方法
2011-01-25 11:06 3315如果想要了解更多的信息,参阅代码里面给的链接 下面是这个正确的 ... -
使用poi一步一步建立报表 (excel操作)
2011-01-08 20:21 1626... -
Apache POI HSSF读写Excel总结
2011-01-08 18:03 1368Apache POI HSSF和XSSF读写EXCEL总结 H ... -
JNLP介绍
2010-12-05 15:04 1904原文地址:http://blog.csdn.net/yq7 ... -
利用反射私有属性/方法进行设置/调用
2010-12-03 08:35 1155因一时兴起看了一些有关 Java 反射( Reflection ... -
如何编写高效率java代码
2010-09-08 12:38 1516如何编写高效率Java 规则1 用时间频度来确定异常情况 ... -
深入理解Java加载类的机制
2010-09-07 22:32 1156这里从三个方面讲述java classloader ... -
Java 动态加载类
2010-09-07 22:29 2311Java 动态加载类 收 ... -
简单例子演示如何进行类的热加载(Hot Deployment)
2010-09-07 22:13 1731简单例子演示如何进行 ... -
ResourceBundle与Properties两个类的区别
2010-08-26 14:09 1633这两个类都是读取properties格式的文件的,而Prope ... -
log4j多文件配置
2010-08-26 10:07 1529log4j.rootCategory=INFO, CONSOL ... -
java获取properties 配置文件
2010-08-26 09:21 1786根据网上的例子总结了一下。 其中cache.p ... -
Class.forName与new 得区别
2010-08-13 15:45 1096Class.forName(xxx.xx.xx) 返回一个类 ... -
java中byte 与16进制字符相互转换
2010-07-27 13:53 7479Java中byte用二进制表示占用8位,而我们知道16进制的每 ... -
使用Axis在Tomcat下发布Webservice操作指南
2010-06-21 12:58 2497最近在工作过程中总是需要向其它项目组提供Webservice ... -
jdk安装
2010-06-12 21:41 14761.1 获取 JDK Java 的 ... -
System.load 和 System.loadLibrary
2010-06-12 08:37 1473System.load 和 System.loadLibrar ...
相关推荐
本篇文章将深入探讨如何在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获取服务器数据并进行JSON解析。 首先,我们需要理解HTTP的基础概念。HTTP(超文本传输协议)是一种应用层协议,用于在Web上交换数据。HTTPURLConnection类提供了创建和...
本教程将详细讲解如何使用HttpURLConnection实现单线程、多线程下载以及多线程续点下载。 **一、单线程下载** 单线程下载是最基础的下载方式,它通过一个连接获取服务器资源并写入本地文件。以下是一个简单的单...
本篇文章将深入讲解如何使用`HttpURLConnection`类来模拟浏览器请求,并通过实例展示其在接口调用中的应用。 首先,`HttpURLConnection`是`java.net.URLConnection`的一个子类,用于处理HTTP协议。在使用`...
以下是一个简单的示例,展示了如何使用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...
无论GET还是POST,都可以通过`InputStream`读取服务器返回的数据,通过`HttpURLConnection.getResponseCode()`检查服务器响应的状态码,以判断请求是否成功。 在实际开发中,HTTP URLConnection相比于其他HTTP...