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-master` 压缩包中的内容可能包括以下几个部分: 1. **源代码**:包含服务端点类(Endpoint)和可能的数据模型类(Entities),使用 JAX-RS 注解进行标注。 2. **配置文件**:如 `web.xml` 或 `...
总结来说,JAX-RS提供了一种简洁、直观的方式来创建RESTful Web Service。通过注解,我们可以轻松地定义资源、操作以及数据交换格式,而无需复杂的配置或底层HTTP处理。结合一个实现库,如Jersey,我们可以快速搭建...
在进行**JAX-RS测试**时,我们主要关注以下几个方面: 1. **单元测试**:测试单个资源类或方法的行为。这通常涉及到模拟(Mocking)依赖项,确保资源方法按预期处理请求和生成响应。可以使用如JUnit和Mockito这样的...
测试JAX-RS服务通常涉及以下几个方面: 1. **资源方法测试**:验证资源类中的GET、POST、PUT、DELETE等HTTP操作是否正确响应并返回预期的数据。 2. **路径参数和查询参数**:检查URL路径和查询参数的处理是否符合...
例如,`@Context`注解可以用来注入以下几种类型的上下文: - **HttpServletRequest**: 提供HTTP请求的详细信息,如请求头、路径参数等。 - **HttpServletResponse**: 允许你直接操作响应,如设置状态码、添加头...
### RESTful Java with JAX-RS #### 一、REST与HTTP的复兴 在《RESTful Java with JAX-RS》这本书中,作者Bill Burke强调了REST架构的重要性及其与HTTP协议之间的紧密联系。REST(Representational State Transfer...
在探讨“jaxrs导致的错误”这一主题时,我们深入分析了由JAX-RS(Java API for RESTful Web Services)引发的特定异常情况。这一问题不仅涉及JAX-RS框架本身,还牵扯到Spring框架与Apache CXF库之间的交互,其中包含...
"jaxrs-ri-2.21" 这个标题指的是 Jersey 框架的一个特定版本,即 JAX-RS 实现(Java API for RESTful Web Services Reference Implementation)的2.21版。JAX-RS 是 Java 平台上用于构建 RESTful Web 服务的一套标准...
在Java世界中,JAX-RS(Java API for RESTful Web Services)是一种标准,用于创建RESTful服务。REST,即Representational State Transfer,是一种网络应用程序的设计风格和开发方式,基于HTTP协议,使得Web服务可以...
综上所述,`jaxrs-ri-2.23.1.zip`包含了Jersey 2.23.1的实现,这是一个强大的RESTful服务开发框架,提供了一系列注解和工具,使得开发人员可以更专注于业务逻辑,而无需过多关注底层实现细节。通过理解和掌握JAX-RS...
在"jaxrs-0.52.zip"中包含的"sameas4j-master"可能指的是该开源项目的源代码仓库,通常以Git仓库的形式存在,其中包含了项目的所有源代码、测试代码、文档以及构建脚本。对于开发者而言,查阅这样的源代码可以帮助...
标题 "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 2.2.1版本的源代码包,对于开发者来说,它是深入理解Resteasy工作原理和学习REST服务开发的宝贵资源。 Resteasy的核心特性包括: 1. 支持JSR 311:它遵循Java API ...
5. **客户端API**:介绍JAX-RS提供的客户端API,使开发者可以方便地创建和发送REST请求,接收并处理响应。 6. **过滤器和拦截器**:讲解如何使用JAX-RS的过滤器和拦截器来实现通用的功能,如日志记录、身份验证和...
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...
JAX-WS的API主要集中在注解上,用于操作Web服务,通常用在客户端。而WS-Metadata(JSR181)是JAX-WS的一个依赖规范,它通过注解提供配置Web服务的方法。 2. JAXM&SAAJ:JAXM(Java API for XML Messaging)主要定义...
本项目“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"是一个简单的RESTful Web服务示例,利用了Java生态中的几个关键组件:Maven、JAX-RS、JAXB和EASTeasy。 1. **Maven**: Maven是Java项目管理工具,它帮助开发者管理依赖关系、构建...
4. 客户端示例:展示了如何使用JAX-RS客户端API来调用和测试服务。 5. 配置文件:可能包含应用程序配置,如服务的启动路径、使用的服务提供者等。 通过分析和学习这个代码库,开发者可以深入了解如何使用Java和JAX-...
在Android项目中创建一个JAX-RS客户端,主要涉及到以下几个步骤:配置项目环境,定义JAX-RS接口,引入Retrofit库,构建Retrofit实例,以及发起网络请求。通过这种方式,我们可以轻松地与遵循JAX-RS规范的Web服务进行...