HttpURLConnection为javaAPI提供的一种Rest访问的方式。其支持对Post,Delete,Get,Put等方式的访问。
以下为对于HttpURLConnection对Post等方式访问的一段代码。
view plaincopy to clipboardprint?
package com.jago.cdn.util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class URLConnectionUtil {
private static final String SERVLET_POST = "POST" ;
private static final String SERVLET_GET = "GET" ;
private static final String SERVLET_DELETE = "DELETE" ;
private static final String SERVLET_PUT = "PUT" ;
private static String prepareParam(Map<String,Object> paramMap){
StringBuffer sb = new StringBuffer();
if(paramMap.isEmpty()){
return "" ;
}else{
for(String key: paramMap.keySet()){
String value = (String)paramMap.get(key);
if(sb.length()<1){
sb.append(key).append("=").append(value);
}else{
sb.append("&").append(key).append("=").append(value);
}
}
return sb.toString();
}
}
public static void doPost(String urlStr,Map<String,Object> paramMap ) throws Exception{
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod(SERVLET_POST);
String paramStr = prepareParam(paramMap);
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
os.write(paramStr.toString().getBytes("utf-8"));
os.close();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line ;
String result ="";
while( (line =br.readLine()) != null ){
result += "/n"+line;
}
System.out.println(result);
br.close();
}
public static void doGet(String urlStr,Map<String,Object> paramMap ) throws Exception{
String paramStr = prepareParam(paramMap);
if(paramStr == null || paramStr.trim().length()<1){
}else{
urlStr +="?"+paramStr;
}
System.out.println(urlStr);
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod(SERVLET_GET);
conn.setRequestProperty("Content-Type","text/html; charset=UTF-8");
conn.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line ;
String result ="";
while( (line =br.readLine()) != null ){
result += "/n"+line;
}
System.out.println(result);
br.close();
}
public static void doPut(String urlStr,Map<String,Object> paramMap) throws Exception{
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod(SERVLET_PUT);
String paramStr = prepareParam(paramMap);
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
os.write(paramStr.toString().getBytes("utf-8"));
os.close();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line ;
String result ="";
while( (line =br.readLine()) != null ){
result += "/n"+line;
}
System.out.println(result);
br.close();
}
public static void doDelete(String urlStr,Map<String,Object> paramMap) throws Exception{
String paramStr = prepareParam(paramMap);
if(paramStr == null || paramStr.trim().length()<1){
}else{
urlStr +="?"+paramStr;
}
System.out.println(urlStr);
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod(SERVLET_DELETE);
if(conn.getResponseCode() ==200){
System.out.println("成功");
}else{
System.out.println(conn.getResponseCode());
}
}
public static void main(String[] args) throws Exception{
String urlStr = "http://localhost:8080/SwTest/ReceiveDataServlet";
Map<String,Object> map = new HashMap<String,Object>();
map.put("username","张三");
map.put("password","88888");
// URLConnectionUtil.doGet(urlStr, map);
// URLConnectionUtil.doPost(urlStr, map);
// URLConnectionUtil.doPut(urlStr, map);
URLConnectionUtil.doDelete(urlStr, map);
}
}
- 浏览: 528463 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
c7887qin:
貌似还要使用相同的证书进行签名。。。
Android - 如何将两个/多个应用放到一个进程中去? -
北极光之吻:
天天向上1989 写道不是有OnDoubleTapListen ...
android实现双击事件监听 -
nielong123:
nielong123 写道onCheckedChanged(M ...
Android RadioGroup 换行, 支持多行多列 -
nielong123:
onCheckedChanged(MultiRadioGrou ...
Android RadioGroup 换行, 支持多行多列 -
zk_Ming:
zk_Ming 写道我用了你的,但是radiogroup 点击 ...
Android RadioGroup 换行, 支持多行多列
发表评论
-
Android 修改Android签名证书keystore的密码、别名alias以及别名的密码
2015-04-27 10:35 1248转载请注明出处:http://blog.csdn.net/ ... -
Android签名验证简介
2014-05-16 10:15 5388Android原生自带了个安装器(packages\apps ... -
正则表达式大全
2014-03-18 17:05 1018正则表达式匹配网址: (https://[\w]*.|http ... -
正则表达式大全
2014-03-18 16:53 0正则表达式匹配网址: (https://[\w]*.|http ... -
jni jstring 、char* 类型的转换
2014-03-06 18:20 849jni jstring 、char* 类型的转换 //jst ... -
基于 Android NDK 的学习之旅-----资源释放
2014-01-11 14:37 1138转载于http://www.cnblogs.com ... -
Android系统手机端抓包方法
2013-06-25 11:42 1017抓包准备 1. Android手机需要先获得root权限。 ... -
Android捕获异常
2013-04-03 14:52 1070如果有些异常是运行时异常,你无法捕获,但是又不想让程序 ... -
JAVA比较器报错:Comparison method violates its general contract
2013-02-05 13:03 13860java.lang.IllegalArgumentExcept ... -
java.lang.IllegalStateException: tried to write 1544 bytes with content-length
2013-01-31 14:57 1422上传文件时,content-length定义的长度小于 ... -
Javadoc生成方法
2013-01-23 14:30 1067方法1:在eclipse中生成 ... -
eclipse 开导入android 第三方jar包java heap space问题解决
2013-01-22 17:25 2523最近做android应用需要使用第三方的jar包,结果导入到e ... -
Java MD5加密
2012-12-03 15:01 911import java.security.*; imp ... -
解决android网络异常java.net.SocketException: Bad address family
2012-10-22 11:28 3248在Android系统中进行网络开发时,如果使用了java.ni ... -
怎么让JButton的大小适应图片的大小
2012-10-09 18:36 4435可以自己来设置大小: ImageIcon icon = new ... -
Android开发进阶之NIO非阻塞包(八)
2012-09-25 15:59 0在整个DDMS中体现Android NIO主要框架的要数Mon ... -
Android开发进阶之NIO非阻塞包(七)
2012-09-25 15:58 0今天我们继续就Android DDMS源码一起分析NIO非阻塞 ... -
Android开发进阶之NIO非阻塞包(六)
2012-09-25 15:58 0有关Android NIO的相关内容,本次Android123 ... -
Android开发进阶之NIO非阻塞包(五)
2012-09-25 15:56 1064有关Android NIO的注意点和重点今天Android12 ... -
Android开发进阶之NIO非阻塞包(四)
2012-09-25 15:55 1106今天我们通过一个实例详细讲解下Android下NIO非阻塞服务 ...
相关推荐
在深入探讨HTTP协议中的请求头和响应头之前,我们首先简要回顾一下HTTP协议的基本概念。HTTP(Hypertext Transfer Protocol)是用于从万维网服务器传输超文本到本地浏览器的传输协议,它允许数据在客户端和服务器...
ASIHTTPRequest是iOS开发中早期广泛使用的一个网络请求库,由美国开发者Sam Soffes开发,它简化了HTTP请求的处理,使得在Objective-C项目中发送网络请求变得更加方便。虽然现在已被更现代的AFNetworking等库取代,但...
首先,让我们回顾一下 Context 的基本概念。Context 是一个上下文管理,有一个根 Context,通过这个根 Context 可以创建出更多功能的 Context,例如具有取消功能的 Context 和超时功能的 Context。我们可以使用 ...
Servlet是一种用Java编写的服务器端程序,它运行在Web服务器上,接收并响应来自Web客户端的HTTP请求。Servlet的主要作用是扩展服务器的功能,比如处理用户请求、管理会话、与数据库交互等。Servlet与Java Applet类似...
通过以上步骤,我们可以构建一个功能齐全的HTTP请求封装库,它不仅可以处理基本的GET和POST请求,还能处理更复杂的网络交互,包括拦截器、自定义配置等。这将极大地提高开发效率,使代码更加模块化,易于维护。 在...
首先,我们来回顾一下 Magento 请求流的概览(见 Figure 1)。当用户通过 Web 浏览器发出 HTTP 请求时,服务器接收请求并准备响应。在 Magento 的上下文中,这个响应包含了处理特定模块、控制器和动作后的结果。 ...
这篇博客可能是对Struts框架的一个回顾,探讨其基本概念、工作原理以及在实际开发中的应用。 Struts的核心组件包括: 1. **Action类**:这是业务逻辑的入口点,处理用户请求,并与模型进行交互。 2. **ActionForm**...
综上所述,要精通AJAX技术,不仅要熟练掌握`XMLHttpRequest`对象的使用,还要深刻理解HTTP就绪状态、HTTP状态代码以及不同类型的HTTP请求。通过这些基础知识的学习,开发者可以在遇到问题时更快地进行调试和解决问题...
在IT行业中,Servlet是Java Web开发中的核心组件,主要用于处理HTTP请求并生成动态网页内容。本案例主要聚焦于Servlet在实现Web应用中的基础操作:增删改查(CRUD),结合MySQL数据库进行数据操作。以下将详细介绍这...
- `open(method, url, async)`: 这个方法用于初始化一个HTTP请求。`method`参数通常为GET或POST,`url`指定请求的目标URL,`async`表示请求是否异步执行。 - `send(data)`: 发送HTTP请求。如果使用POST方法,可以...
首先,我们将回顾 HTTP 协议,然后讨论 Servlet 的基本使用和跳转。 HTTP 协议回顾 HTTP 协议是应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于 1990 年提出,经过几年的使用...
此外,URL和URLConnection类则用于处理HTTP请求和响应。 `java.nio`包(非阻塞I/O)提供了更高效的数据传输方式,尤其是对于高并发场景。它引入了选择器(Selector)和通道(Channel)的概念,允许程序同时处理多个...
3. **解析HTTP请求**:接收到的数据是客户端发送的HTTP请求。你需要将接收到的字符串分解为各个部分,如请求行、请求头和可能的请求体。 4. **处理GET请求**:检查请求方法是否为GET,如果是,根据请求的URL找到...
1. **HTTP请求编辑**:Rational HTTP Request Editor提供了一个用户友好的界面,可以方便地输入HTTP请求的基本信息,如方法(GET、POST、PUT等)、URL、协议(HTTP/HTTPS)以及端口号。用户还可以添加请求头,如...
它将HTTP请求转发给对应的Action,然后将Action的结果返回给用户。 **5. 数据校验** Struts1.x提供了内置的表单验证功能,可以在ActionForm中定义字段的验证规则,当数据不符合规则时,会抛出错误信息并显示在页面...
3. **JSP内置对象**:包括request、response、session、application、pageContext、out、exception等,它们为开发者提供了与HTTP请求、响应、会话、应用上下文等交互的接口。 4. **JSP指令**:例如page指令、...
首先,让我们回顾一下基本的HTTP请求头及其作用: 1. **User-Agent**: 表明客户端的身份,如浏览器类型和版本。在示例中,我们设置了`'User-Agent': 'fake-client'`,在实际应用中,你可能需要设置为真实用户的...
1. **请求与响应捕获**:HttpDebug能够捕获和显示所有的HTTP请求和响应,包括方法(GET、POST等)、URL、状态码、头部信息和实体主体,这有助于理解网络交互的全过程。 2. **请求编辑器**:用户可以使用HttpDebug...
首先,让我们回顾一下`fetch`的基本用法。`fetch`函数接收两个参数:URL和一个可选的配置对象。在这个配置对象中,我们可以设置HTTP方法(如POST),添加自定义头信息,以及提供请求体(body)。 ```javascript ...
在计算机科学领域,网络编程是一项重要的技能,特别是对于开发服务器端应用而言。...这个过程不仅可以提升个人技能,也是对计算机科学历史的一次回顾,因为即使在现代编程环境中,许多基本原理和技术仍然适用。