`
445850053
  • 浏览: 13411 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

rest之Http访问方式

阅读更多

    最近的一段时间一直在研究有关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 "";
    }
分享到:
评论

相关推荐

    activit6-rest用ajax如何访问-base64加密

    标题"activit6-rest用ajax如何访问-base64加密"主要涵盖了两个关键点:一是如何使用Ajax访问Activiti6的REST接口,二是如何使用Base64对数据进行加密处理。 1. Ajax访问Activiti6 REST接口: - **创建Ajax请求**:...

    c# rest http请求类库

    在现代Web服务交互中,REST(Representational State Transfer)架构风格已经成为主流,它基于HTTP协议进行数据交换。为了简化C#应用与RESTful API的交互,开发者通常会使用特定的类库。在这个场景下,“c# rest ...

    Java 调用Http Rest接口 例子说明

    REST (Representational State Transfer) 是一种设计网络应用程序的架构风格,其核心原则之一是无状态性。在REST架构中,客户端和服务端之间的交互基于HTTP协议,通过发送HTTP请求并接收HTTP响应来完成。 #### 三、...

    Azure使用Rest访问存储服务的例子

    在Azure云平台上,访问存储服务是一项关键操作,尤其对于开发者来说,通过REST接口进行交互能够实现灵活、高效的数据管理。本篇文章将详细讲解如何利用REST API来访问Azure的Blob、队列和表存储服务。 首先,Azure...

    kettle rest 接口 请求实例

    首先,我们要理解REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,允许客户端通过HTTP方法(如GET、POST、PUT、DELETE等)来访问和操作服务器上的资源。在Kettle中...

    浅谈http协议和REST

    HTTP协议是基于TCP/IP协议之上的应用层协议之一,它具有以下特点: - **无状态性**:HTTP协议本身不保存任何关于用户的信息,即每次请求之间是相互独立的。 - **简单快速**:客户向服务器请求服务时,只需传送请求...

    谷歌浏览器插件+AdvancedRestClient+Http Rest API测试调试

    REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,通过URI(统一资源标识符)来定位资源,并使用HTTP方法(如GET、POST、PUT、DELETE等)来操作这些资源。REST API被...

    基于HTTP的REST软件架构实例

    REST是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以简洁和统一的方式组织网络资源。REST架构的核心概念包括资源、URI(Uniform Resource Identifier)和表现层状态转移。在RESTful架构中,每个资源都有...

    springboot集成mybatis+rest接口提供+文件访问自定义配置

    在本项目中,"springboot集成mybatis+rest接口提供+文件访问自定义配置"是一个典型的企业级开发示例,旨在帮助初学者理解和实践Spring Boot与MyBatis的整合,以及如何通过RESTful接口提供服务,并自定义文件访问配置...

    Kepware IOT gateway使用教程 - REST Sever

    总结来说,KEPWARE IoT Gateway 的 REST Server 提供了一种简单而灵活的方式,使开发者和系统管理员能够利用 RESTful API 与 KEPWARE 进行数据交互。通过配置网络设置、选择数据源、设置安全选项,以及使用 curl ...

    WCF_REST_HTTP方式GET和POST

    WCF_REST_HTTP方式GET和POST,可以通过网站直接请求数据,http协议,不需要部署iis,直接运行程序就可以通过网站访问到数据 教程地址 http://www.cnblogs.com/artech/archive/2012/02/04/wcf-rest-sample.html

    Titanium中Httpclient访问REST 服务

    总的来说,Titanium的HttpClient模块提供了一种强大而灵活的方式,使开发者能够轻松地与REST服务进行交互。通过理解和熟练掌握HttpClient的使用,我们可以构建出功能丰富的移动应用,实现与后端服务器的无缝连接。

    WCF REST service test

    REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,使得API更易于理解和使用。在本项目中,“WCF REST Service Test”是一个用于测试WCF REST服务的应用程序,它提供...

    cpprest实例工程

    5. **HTTP响应的处理**:cpprest库将HTTP响应封装在`http_response`对象中,提供了方便的方法来访问响应头和响应体。在文件拉取场景下,我们通常关心的是响应体,因为它是文件内容。 6. **JSON序列化与反序列化**:...

    REST服务构建的web应用的优势和不足

    真正潜在风险存在于 REST 灵活的使用方式上,既可以被服务器端调用又能被客户端调用,所以一开始就要明确地区分用户访问权限和系统访问权限,区分 Web 页面权限和 REST 服务权限,但有时在开发中经常混为一谈,所以...

    3.6 访问REST API

    在IT行业中,REST(Representational State Transfer)API已经成为构建分布式系统和Web服务间通信的主流方式。RESTful API设计遵循一套原则,使得接口简洁、高效且易于理解和使用。本节我们将深入探讨“3.6 访问REST...

    Rest服务搭建范例

    这种设计方式使得REST服务轻量级、高效且易于使用。 Jersey是Java语言中最流行的RESTful服务框架之一,由Sun Microsystems(现已被Oracle收购)开发。它实现了JAX-RS(Java API for RESTful Web Services)规范,为...

Global site tag (gtag.js) - Google Analytics