`
mj4d
  • 浏览: 302915 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAX-RS:客户端的几种方式

阅读更多

HttpURLConnection

public static byte[] request(String urlString, String requestData, String method, String contentType, int timeout)
        throws WsException {
    byte[] responseData = null;

    HttpURLConnection con = null;
    BufferedReader in = null;
    PrintWriter out = null;

    try {
        URL url = new URL(urlString);
        con = (HttpURLConnection) url.openConnection();
        con.setInstanceFollowRedirects(false);
        con.setRequestMethod(method); // 置为POST方法
        con.setRequestProperty(CONTENT_TYPE, contentType);
        con.setDoInput(true); // 开启输入流
        con.setDoOutput(true); // 开启输出流
        con.setUseCaches(false);

        //set default timeout
        if (timeout == 0) {
            timeout = TIMEOUT;
        }
        con.setConnectTimeout(timeout);
        con.setReadTimeout(timeout);

        // 如果请求数据不为空,输出该数据。
        if (requestData != null) {
            out = new PrintWriter(new OutputStreamWriter(con.getOutputStream(), CHARACTER_ENCODING));
            out.write(URLEncoder.encode(requestData, CHARACTER_ENCODING));
            out.flush();
        }

        int length = con.getContentLength();
        // 如果回复消息长度不为-1,读取该消息。
        if (length != -1) {
            DataInputStream dis = new DataInputStream(con.getInputStream());
            responseData = new byte[length];
            dis.readFully(responseData);
            dis.close();
        }
    } catch (SocketTimeoutException e) {
        String errorMsg = "[SocketTimeoutException]request:url[" + urlString + "] request:[" + requestData
                + "] timout:[" + timeout + "]  msg=" + e.getMessage();
        LOG.error(errorMsg);
        throw new WsException("SocketTimeoutException", e.getMessage());
    } catch (MalformedURLException e) {
        String errorMsg = "[MalformedURLException]request:url[" + urlString + "]  request[" + requestData
                + "]  msg=" + e.getMessage();
        LOG.error(errorMsg);
        throw new WsException("MalformedURLException", e.getMessage());
    } catch (IOException e) {
        String errorMsg = "[IOException]request:url[" + urlString + "]  request[" + requestData + "]  msg="
                + e.getMessage();
        LOG.error(errorMsg);
        throw new WsException("IOException", e.getMessage());
    } finally {
        if (out != null) {
            out.flush();
        }
        IOUtils.closeQuietly(out);
        IOUtils.closeQuietly(in);
        if (con != null) {
            con.disconnect();
        }
    }

    return responseData;
}

 

HttpClient

public static String req(String url, String jsonData, String token) throws WsException {
    PostMethod post = new PostMethod(url);
    RequestEntity requestEntity;
    String bodyContent;
    try {
        requestEntity = new StringRequestEntity(jsonData, CONTENT_JSON, CHARACTER_ENCODING);
        post.setRequestEntity(requestEntity);
        post.addRequestHeader("Accept", CONTENT_JSON);
        if (StringUtils.isNotBlank(token)) {
            post.setRequestHeader("Authorization", token);
        }

        HttpClient httpClient = new HttpClient();
        httpClient.executeMethod(post);
        if (post.getStatusCode() != 200) {
            throw new RuntimeException(post.getStatusCode() + "");
        }
        bodyContent = post.getResponseBodyAsString();
    } catch (UnsupportedEncodingException e) {
        String errorMsg = "[UnsupportedEncodingException]request:url[" + url + "]  request[" + jsonData + "]  msg="
                + e.getMessage();
        LOG.error(errorMsg);
        throw new WsException("UnsupportedEncodingException", e.getMessage());
    } catch (HttpException e1) {
        String errorMsg = "[HttpException]request:url[" + url + "]  request[" + jsonData + "]  msg="
                + e1.getMessage();
        LOG.error(errorMsg);
        throw new WsException("HttpException", e1.getMessage());
    } catch (IOException e2) {
        String errorMsg = "[IOException]request:url[" + url + "]  request[" + jsonData + "]  msg="
                + e2.getMessage();
        LOG.error(errorMsg);
        throw new WsException("IOException", e2.getMessage());
    } finally {
        post.releaseConnection();
    }
    return bodyContent;
}

WebClient

WebClient client = WebClient.create("http://books");
client.path("bookstore/books");
client.type("text/xml").accept("text/xml")
Response r = client.post(new Book());
Book b = r.readEntity(Book.class);

 

更多信息这里

分享到:
评论

相关推荐

    JAX-RS-demo:学术项目的 JAX-RS 演示

    `JAX-RS-demo-master` 压缩包中的内容可能包括以下几个部分: 1. **源代码**:包含服务端点类(Endpoint)和可能的数据模型类(Entities),使用 JAX-RS 注解进行标注。 2. **配置文件**:如 `web.xml` 或 `...

    JAX-RS方式的RESTful Web Service开发

    总结来说,JAX-RS提供了一种简洁、直观的方式来创建RESTful Web Service。通过注解,我们可以轻松地定义资源、操作以及数据交换格式,而无需复杂的配置或底层HTTP处理。结合一个实现库,如Jersey,我们可以快速搭建...

    jax-rs-test:JAX-RS测试

    在进行**JAX-RS测试**时,我们主要关注以下几个方面: 1. **单元测试**:测试单个资源类或方法的行为。这通常涉及到模拟(Mocking)依赖项,确保资源方法按预期处理请求和生成响应。可以使用如JUnit和Mockito这样的...

    jee8-jax-rs:JAX-RS测试

    测试JAX-RS服务通常涉及以下几个方面: 1. **资源方法测试**:验证资源类中的GET、POST、PUT、DELETE等HTTP操作是否正确响应并返回预期的数据。 2. **路径参数和查询参数**:检查URL路径和查询参数的处理是否符合...

    jax-rs-context:使用 JAX-RS 注入或拦截某些内容的示例

    例如,`@Context`注解可以用来注入以下几种类型的上下文: - **HttpServletRequest**: 提供HTTP请求的详细信息,如请求头、路径参数等。 - **HttpServletResponse**: 允许你直接操作响应,如设置状态码、添加头...

    Restful java with jax-rs

    ### RESTful Java with JAX-RS #### 一、REST与HTTP的复兴 在《RESTful Java with JAX-RS》这本书中,作者Bill Burke强调了REST架构的重要性及其与HTTP协议之间的紧密联系。REST(Representational State Transfer...

    jaxrs导致的错误

    在探讨“jaxrs导致的错误”这一主题时,我们深入分析了由JAX-RS(Java API for RESTful Web Services)引发的特定异常情况。这一问题不仅涉及JAX-RS框架本身,还牵扯到Spring框架与Apache CXF库之间的交互,其中包含...

    jaxrs-ri-2.21

    "jaxrs-ri-2.21" 这个标题指的是 Jersey 框架的一个特定版本,即 JAX-RS 实现(Java API for RESTful Web Services Reference Implementation)的2.21版。JAX-RS 是 Java 平台上用于构建 RESTful Web 服务的一套标准...

    莫斯科javaone大会关于JAX-RS(jersey)的演讲内容

    在Java世界中,JAX-RS(Java API for RESTful Web Services)是一种标准,用于创建RESTful服务。REST,即Representational State Transfer,是一种网络应用程序的设计风格和开发方式,基于HTTP协议,使得Web服务可以...

    jaxrs-ri-2.23.1.zip

    综上所述,`jaxrs-ri-2.23.1.zip`包含了Jersey 2.23.1的实现,这是一个强大的RESTful服务开发框架,提供了一系列注解和工具,使得开发人员可以更专注于业务逻辑,而无需过多关注底层实现细节。通过理解和掌握JAX-RS...

    jaxrs-0.52.zip

    在"jaxrs-0.52.zip"中包含的"sameas4j-master"可能指的是该开源项目的源代码仓库,通常以Git仓库的形式存在,其中包含了项目的所有源代码、测试代码、文档以及构建脚本。对于开发者而言,查阅这样的源代码可以帮助...

    org.apache.servicemix.bundles.swagger-jaxrs-1.3.2_2.zip

    标题 "org.apache.servicemix.bundles.swagger-jaxrs-1.3.2_2.zip" 暗示了这是一个包含 Apache ServiceMix 托管的 Swagger-JAXRS 的软件包,版本为 1.3.2_2。Swagger 是一个流行的 API 描述语言和工具集,用于设计、...

    resteasy-jaxrs-2.2.1.GA-src官方源码

    这个“resteasy-jaxrs-2.2.1.GA-src”是Resteasy 2.2.1版本的源代码包,对于开发者来说,它是深入理解Resteasy工作原理和学习REST服务开发的宝贵资源。 Resteasy的核心特性包括: 1. 支持JSR 311:它遵循Java API ...

    Oreilly_RESTfu_Java_with_JAX-RS.rar_Java编程_Java_

    5. **客户端API**:介绍JAX-RS提供的客户端API,使开发者可以方便地创建和发送REST请求,接收并处理响应。 6. **过滤器和拦截器**:讲解如何使用JAX-RS的过滤器和拦截器来实现通用的功能,如日志记录、身份验证和...

    java-ws-proj-template:该项目包含将在Java Web服务项目中使用的所有标准

    Java Web服务主要基于两种技术:JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)。JAX-WS主要用于构建SOAP(Simple Object Access Protocol)服务,而JAX-RS则支持REST...

    WebService的几种不同实现方式

    JAX-WS的API主要集中在注解上,用于操作Web服务,通常用在客户端。而WS-Metadata(JSR181)是JAX-WS的一个依赖规范,它通过注解提供配置Web服务的方法。 2. JAXM&SAAJ:JAXM(Java API for XML Messaging)主要定义...

    jersy-rest-api:使用 JAX_RS 和 Jersy 演示 Java Web 服务示例。 通过 Chrome Rest 扩展和 Java URL 客户端测试

    本项目“jersy-rest-api”使用Java的JAX-RS(Java API for RESTful Web Services)规范和Jersey框架来创建RESTful服务,并使用Chrome的REST客户端扩展和Java URL客户端进行测试。 **JAX-RS简介** JAX-RS是Java标准...

    restful_simple_example:带有 Maven、JAX-RS、JAXB、EASTeasy 的 RESTful Web 服务的简单示例 ..

    本项目"restful_simple_example"是一个简单的RESTful Web服务示例,利用了Java生态中的几个关键组件:Maven、JAX-RS、JAXB和EASTeasy。 1. **Maven**: Maven是Java项目管理工具,它帮助开发者管理依赖关系、构建...

    Java Restful Web Service,edition2.代码

    4. 客户端示例:展示了如何使用JAX-RS客户端API来调用和测试服务。 5. 配置文件:可能包含应用程序配置,如服务的启动路径、使用的服务提供者等。 通过分析和学习这个代码库,开发者可以深入了解如何使用Java和JAX-...

    AndroidJAXRSClient:创建一个Android客户端项目

    在Android项目中创建一个JAX-RS客户端,主要涉及到以下几个步骤:配置项目环境,定义JAX-RS接口,引入Retrofit库,构建Retrofit实例,以及发起网络请求。通过这种方式,我们可以轻松地与遵循JAX-RS规范的Web服务进行...

Global site tag (gtag.js) - Google Analytics