最近的一段时间一直在研究有关rest的资料。相信有不少人也都或多或少的接触过rest架构。rest是一直新的规范,现在java中,.net中也都有针对rest开发的一些框架。我最近也研究了不少框架,但最后还是决定用http的方式来访问rest结构的数据。即使用Http的GET,PUT,POST和DELETE来对rest结构的数据进行操作。
因为我是做java的,所以我主要针对java来说。java中实现Http访问rest,主要是通过一个类,HttpURlconnection,使用这个类来实现的。下面请看一下代码:
/** * 执行REST的post方法 * @param urlStr * @param param * @param accept * @return 成功:true / 失败:false * @throws Exception * * @author 10050315 */ public static String doPost(String urlStr, String param, String accept) throws Exception { boolean state = false; URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置发送请求的方式 conn.setRequestMethod(SERVLET_POST); // 设置参数的格式类型 conn.setRequestProperty("Content-Type", accept); // 打开输入输出,在output中传输参数 conn.setDoInput(true); conn.setDoOutput(true); OutputStream os = conn.getOutputStream(); // 把参数写入output流,使用UTF-8编码 os.write(param.getBytes("utf-8")); os.close(); // 正常时返回的状态码为200 if (conn.getResponseCode() == 200) { state = true; // 获取返回的内容 BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); // 输出返回的信息 String line; while ((line = br.readLine()) != null) { System.out.println(line); return line; } br.close(); } else { System.out.println(SERVLET_POST + " [ERROR] CODE: " + conn.getResponseCode()); } return "get error:no value"; }
这是针对post方法来说的,可以使用这个方法,来传到你想要传的webservice接口,并返回一个数据。
下面这个方法是GET方法,主要用来获取数据的:
/** * 执行REST的get方法 * @param urlStr * @param accept * @return REST返回的数据 * @throws Exception * * @author 10050315 */ public static String doGet(String urlStr, String accept) throws Exception { String state = ""; URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置发送请求的方式 conn.setRequestMethod(SERVLET_GET); // 设置返回信息的格式类型 conn.setRequestProperty("Accept", accept); conn.connect(); // 正常时返回的状态码为200 if (conn.getResponseCode() == 200) { // 获取返回的内容 BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; // 输出返回的信息 while ((line = br.readLine()) != null) { state += line; } br.close(); } else { System.out.println(SERVLET_GET + " [ERROR] CODE: " + conn.getResponseCode()); } return state; }
下面这个PUT方法,可以用来保存REST数据,也可以写入数据库中,目前我们使用的是非关系型数据库:
/** * 执行REST的put方法 * @param urlStr * @param param * @param accept * @return 成功:true / 失败:false * @throws Exception * * @author 10050315 */ public String doPut(String urlStr, String param, String accept) throws Exception { boolean state = false; URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置发送请求的方式 conn.setRequestMethod(SERVLET_PUT); // 设置参数的格式类型 conn.setRequestProperty("Content-Type", accept); // 打开输入输出,在output中传输参数 conn.setDoInput(true); conn.setDoOutput(true); OutputStream os = conn.getOutputStream(); // 把参数写入output流,使用UTF-8编码 os.write(param.getBytes("utf-8")); os.close(); // 正常时返回的状态码为200 if (conn.getResponseCode() == 200) { state = true; // 获取返回的内容 BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); // 输出返回的信息 String line; while ((line = br.readLine()) != null) { System.out.println(line); return line; } br.close(); } else { System.out.println(SERVLET_PUT + " [ERROR] CODE: " + conn.getResponseCode()); } return "return error:put failure"; }
最后一个DELETE方法,用来删除数据的方法:
/** * 执行REST的delete方法 * @param urlStr * @param accept * @return REST返回的数据 * @throws Exception * * @author 10050315 */ public String doDelete(String urlStr, String accept) throws Exception { boolean state = false; URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置发送请求的方式 conn.setRequestMethod(SERVLET_DELETE); // 设置返回信息的格式类型 conn.setRequestProperty("Accept", accept); // 正常时返回的状态码为200 if (conn.getResponseCode() == 200) { return "success"; } else { System.out.println(SERVLET_DELETE + " [ERROR] CODE: " + conn.getResponseCode()); } return ""; }
相关推荐
REST (Representational State Transfer) 是一种设计网络应用程序的架构风格,其核心原则之一是无状态性。在REST架构中,客户端和服务端之间的交互基于HTTP协议,通过发送HTTP请求并接收HTTP响应来完成。 #### 三、...
标题"activit6-rest用ajax如何访问-base64加密"主要涵盖了两个关键点:一是如何使用Ajax访问Activiti6的REST接口,二是如何使用Base64对数据进行加密处理。 1. Ajax访问Activiti6 REST接口: - **创建Ajax请求**:...
在现代Web服务交互中,REST(Representational State Transfer)架构风格已经成为主流,它基于HTTP协议进行数据交换。为了简化C#应用与RESTful API的交互,开发者通常会使用特定的类库。在这个场景下,“c# rest ...
在Azure云平台上,访问存储服务是一项关键操作,尤其对于开发者来说,通过REST接口进行交互能够实现灵活、高效的数据管理。本篇文章将详细讲解如何利用REST API来访问Azure的Blob、队列和表存储服务。 首先,Azure...
首先,我们要理解REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,允许客户端通过HTTP方法(如GET、POST、PUT、DELETE等)来访问和操作服务器上的资源。在Kettle中...
HTTP协议是基于TCP/IP协议之上的应用层协议之一,它具有以下特点: - **无状态性**:HTTP协议本身不保存任何关于用户的信息,即每次请求之间是相互独立的。 - **简单快速**:客户向服务器请求服务时,只需传送请求...
REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,通过URI(统一资源标识符)来定位资源,并使用HTTP方法(如GET、POST、PUT、DELETE等)来操作这些资源。REST API被...
REST是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以简洁和统一的方式组织网络资源。REST架构的核心概念包括资源、URI(Uniform Resource Identifier)和表现层状态转移。在RESTful架构中,每个资源都有...
在本项目中,"springboot集成mybatis+rest接口提供+文件访问自定义配置"是一个典型的企业级开发示例,旨在帮助初学者理解和实践Spring Boot与MyBatis的整合,以及如何通过RESTful接口提供服务,并自定义文件访问配置...
### Activiti REST 接口详解 #### 一、概述 Activiti是一款开源的工作流引擎,用于简化业务流程的实现与管理。Activiti5.18.0版本...这为开发者提供了灵活而高效的方式来集成Activiti工作流引擎到各种应用程序中。
在IT行业中,REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,主要用于Web服务的构建。RESTful服务接口以其简洁、高效的特点,被广泛应用于分布式系统和互联网应用...
总结来说,KEPWARE IoT Gateway 的 REST Server 提供了一种简单而灵活的方式,使开发者和系统管理员能够利用 RESTful API 与 KEPWARE 进行数据交互。通过配置网络设置、选择数据源、设置安全选项,以及使用 curl ...
OpenDaylight REST API 是一个基于 Representational State of Resource (REST) 架构风格的应用程序接口,提供了一种统一的方式来与 OpenDaylight 控制器交互。 OpenDaylight REST API 使得开发人员可以使用标准的 ...
REST通过定义表述来实现对资源的访问和操作,而URL(Uniform Resource Locator)是定位这些资源的标识符。 REST架构风格具有以下特点: 1. 客户-服务器架构:这种架构通过分离用户界面和数据存储来提高系统的可...
WCF_REST_HTTP方式GET和POST,可以通过网站直接请求数据,http协议,不需要部署iis,直接运行程序就可以通过网站访问到数据 教程地址 http://www.cnblogs.com/artech/archive/2012/02/04/wcf-rest-sample.html
总的来说,Titanium的HttpClient模块提供了一种强大而灵活的方式,使开发者能够轻松地与REST服务进行交互。通过理解和熟练掌握HttpClient的使用,我们可以构建出功能丰富的移动应用,实现与后端服务器的无缝连接。
dataSnap Rest 跨平台的特性众主要是靠JSON来传输数据,通过HTTP,HTTPS 访问方法来获取所得到的数据. 技术牛人小满的作品。谢谢作者。共享给各位。
REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,使得API更易于理解和使用。在本项目中,“WCF REST Service Test”是一个用于测试WCF REST服务的应用程序,它提供...
5. **HTTP响应的处理**:cpprest库将HTTP响应封装在`http_response`对象中,提供了方便的方法来访问响应头和响应体。在文件拉取场景下,我们通常关心的是响应体,因为它是文件内容。 6. **JSON序列化与反序列化**:...
真正潜在风险存在于 REST 灵活的使用方式上,既可以被服务器端调用又能被客户端调用,所以一开始就要明确地区分用户访问权限和系统访问权限,区分 Web 页面权限和 REST 服务权限,但有时在开发中经常混为一谈,所以...