通过Jersey客户端API调用REST风格的Web服务
Jersey 客户端 API 基础
要开始使用 Jersey 客户端 API,你首先需要创建一个 com.sun.jersey .api.client.Client 类的实例。下面是最简单的方法:
import com.sun.jersey .api.client.Client;
Client client = Client.create();
Client 类是创建一个 RESTful Web Service 客户端的主要配置点。你可以使用它来配置不同的客户端属性和功能,并且指出使用哪个资源提供者。创建一个 Client 类的实例是一个比较昂贵的操作,所以尽量避免创建一些不需要的客户端实例。比较好的方式是尽可能地复用已经存在的实例。
当你创建完一个 Client 类的实例后,你可以开始使用它。无论如何,在发出请求前,你需要创建一个 Web Resource 对象来封装客户端所需要的 Web 资源。
Web 资源创建了一个 WebResponse 对象:
import com.sun.jersey .api.client.WebResource;
Web Resource webResource = c.resource("http://example.com/base");
通过使用 WebResource 对象来创建要发送到 Web 资源的请求,以及处理从 Web 资源返回的响应。例如,你可以使用 WebResource 对象来发送 HTTP GET、PUT、POST 以及 DELETE 请求。
GET 请求:使用 WebResource 类的 get() 方法来提交一个 HTTP GET请求到 Web 资源:
String s = webResource.get(String.class);
这表示如果 WebResource 对象的 URL 是 http://example.com/base,那么一个 HTTP GET 请求将会发送到地址为 http://example.com/base 的资源。
String s = webResource.get(String.class);
你还可以指定 get() 请求时的查询参数。例如,下面的代码在 get() 请求中指定了两个查询参数:
MultivaluedMap queryParams = new MultivaluedMapImpl();
queryParams.add("param1", "val1");
queryParams.add("param2", "val2");
String s = webResouce.queryParams(queryParams).get(String.class);
你还可以指定响应所能接受的 MIME 类型。例如,下面的代码指定了响应的 MIME 类型只能为文本:
String s = webResource.accept("text/plain").get(String.class);
你还可以获取对应请求的 HTTP 状态码,例如下面这个例子展示获取一个请求所返回的文本实体与状态码:
ClientResponse response = webResource.accept("text/plain")
.get(ClientResponse.class);
int status = response.getStatus();
String textEntity = response.getEntity(String.class);
ClientResponse 对象代表了一个客户端收到的 HTTP 响应。
PUT 请求 :使用 WebResource 类的 put() 方法来提交一个 HTTP PUT 请求到 Web 资源。例如下面的代码展示了请求发送一个文本实体 foo:bar 到指定的 Web 资源:
ClientResponse response = webResource.type("text/plain")
.put(ClientResponse.class, "foo:bar");
同样,你也可以在使用 put() 方法发送请求时指定查询参数,方法与使用 get() 方法时指定查询参数一样。在下面的例子中,把在之前 get() 方法示例中使用过的两个同样的查询参数指定到了一个 put() 请求中:
MultivaluedMap queryParams = new MultivaluedMapImpl();
queryParams.add("param1", "val1");
queryParams.add("param2", "val2");
ClientResponse response = webResource.queryParams(queryParams)
.put(ClientResponse.class, "foo:bar");
POST 请求 :一个 POST 请求相当于一个 GET 请求和一个 PUT 请求的综合,也就意味着,你可以使用 POST 请求来发送一个实体到指定的 Web 资源并且接收另一个实体。使用 WebResource 类的 post() 方法来发送一个 HTTP POST 请求到指定的 Web 资源。下面的例子展示了发送一个带有查询参数以及进行了 URL 编码的表单数据的 POST 请求:
MultivaluedMap formData = new MultivaluedMapImpl();
formData.add("name1", "val1");
formData.add("name2", "val2");
ClientResponse response = webResource.type("application/x-www-form-urlencoded")
.post(ClientResponse.class, formData);
DELETE 请求:使用 Web Resource 类的 delete() 方法来发送珍上 HTTP DELETE 请求到指定的 Web 资源。例如,下面的例子展示删除一个 URI 为 http://example.com/base/user/123 资源:
ClientResponse response = webResource.path("user/123")
.delete(ClientResponse.class);
另外,Web Resource.path() 方法可以在所有 HTTP 请求中使用,它可以让你给要请求的 Web 资源指定一个额外的路径。另一个 WebResouce 类的方法 header() 可以给你的请求添加 HTTP 头部信息。
另外如果表单提交的话,需要new Form来作为参数提交。
一个基于 Jersey 客户端的示例
package com.trend.vmware.client;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.representation.Form;
import com.trend.vmware.model.TaskResponse;
public class VMOVFRestClient {
public static void main(String[] args) {
String restURI = "http://localhost:8080/VmService";
Client c = Client.create();
WebResource webResource = c.resource(restURI+"/rest/vsphere/template");
exportOVF(webResource,"AutoLab/Test_VM3/action/exportOVF");
// importOVF(webResource,"10.64.3.188/action/importOVF");
}
public static void exportOVF(WebResource r, String pathParam){
postForm(r.path(pathParam),"datastore1","D:/ovf");
System.out.println(" -------------------------"+r.path(pathParam));
}
public static void importOVF(WebResource r, String pathParam){
postFormForImportOVF(r.path(pathParam),"E:/ovf","datastore1","TEST_VM");
System.out.println(" -------------------------"+r.path(pathParam));
}
//TO POST FORM
public static void postForm(WebResource r, String dataStoreName,String localPath) {
Form form = new Form();
form.add("dataStoreName", dataStoreName);
form.add("localPath",localPath);
ClientResponse response = r.type(MediaType.APPLICATION_FORM_URLENCODED)
.post(ClientResponse.class, form);
//TODO handler response.getEntity
System.out.println(response.getEntity(String.class));
}
//TO POST FORM FOR importOVF
public static void postFormForImportOVF(WebResource r, String localPath,String dataStoreName,String newVMName) {
Form form = new Form();
form.add("localPath",localPath);
form.add("dataStoreName", dataStoreName);
form.add("newVMName", newVMName);
ClientResponse response = r.type(MediaType.APPLICATION_FORM_URLENCODED)
.post(ClientResponse.class, form);
//TODO handler response.getEntity
TaskResponse res = response.getEntity(TaskResponse.class);
System.out.println("res ---"+res.getMessage()+"- "+res.getTaskStatus());
}
}
发表评论
-
Java身份证验证方法
2015-11-25 11:14 626Java身份证验证方法 package com.tg.user ... -
java 中文乱码问题
2015-06-30 22:19 476JAVA之编码---->CSV在文 ... -
java如何将错误的堆栈信息写入日志
2015-04-13 15:03 1227最近在写代码的时候,在写日志的时候用e.getMessage( ... -
JAVA中去掉空格
2015-03-27 09:42 561JAVA中去掉空格 1. String.trim ... -
gucie注入学习
2015-01-24 19:36 433http://www.blogjava.net/xylz/ar ... -
Spring的AOP配置
2015-01-21 22:35 412Spring的AOP配置 1.先写一个普通类: packa ... -
记住用户名的,选中复选框则记住用户名和密码,下次登录的时候就方便用户名的登陆
2015-01-17 21:51 848记住用户名的,选中复选框则记住用户名和密码,下次登录的时候就方 ... -
mybatis if 字符串比较注意
2014-12-22 14:39 853正确的写法: <if test='finished= ... -
maven搭建springmvc+spring+mybatis实例
2014-11-30 10:17 921maven管理的springmvc+spring+mybat ... -
log4j教程
2014-10-30 10:35 301log4j教程 1. 简介 2. 安装 3. log4j基本 ... -
redis
2014-09-27 20:25 385java对redis的基本操作 一 ... -
pring + hibernate+ C3P0+MYSQL
2014-08-14 23:49 3841) applicationContext.xml --- ... -
Spring 事物
2014-07-05 06:34 346千山我独行,不必相送... Angi For Ever Spr ... -
Spring+Quartz实现定时任务的配置方法
2014-06-11 22:01 555Spring+Quartz实现定时任务的配置方法 1、Sch ... -
BigDecimal.setScale 处理java小数点位数 (BigDecimal、精度、位数)
2014-05-10 13:34 1496BigDecimal.setScale 处理java小数点位数 ... -
JAVA实现SFTP的实例:
2014-05-05 11:44 410最近写的一个JAVA实现SFTP的实例: /* * Crea ... -
Java模拟HTTP的Get和Post请求
2014-04-18 16:52 687import java.io.BufferedReader; ... -
Java发送http请求 (get 与 post方法请求)
2014-04-18 16:38 416java发送http请求 (get 与 post方法请求 ... -
Java 使用 URLConnection 模拟 Http Get和Post 提交
2014-04-18 16:27 6841、URLConnectionHelper ... -
HttpClient4使用
2014-03-24 16:11 399package main;import java.i ...
相关推荐
标题 "jersery client调用REST框架web services服务的一个示例" 描述了一种...它涉及到REST的基本概念,Jersey客户端API的使用,以及与XML数据相关的库。通过学习这个主题,开发者可以更有效地构建和集成分布式系统。
Jersey还支持多种数据绑定机制,如JSON、XML,以及客户端API,方便服务调用。 结合Jetty和Jersey,我们可以实现动态发布REST接口。首先,需要在项目中引入Jetty和Jersey的相关依赖。接着,创建一个Jetty服务器实例...
总结来说,这个项目展示了如何利用Spring、Jersey和Protobuf的组合来构建一个高效的RESTful Web服务,并通过Python客户端进行测试。这种技术栈适用于需要高性能、跨语言通信的分布式系统。通过实践这样的项目,...
Jersey还提供了客户端API,用于测试和交互式调用REST服务。 2. **Spring**: Spring框架是Java企业级应用开发的核心工具。在REST服务中,Spring提供了Spring MVC模块,它扩展了MVC设计模式,用于构建Web应用程序。...
1. **Jersey API调用方式**:这可能涵盖如何使用Jersey客户端API来发起HTTP请求,获取或发送数据。这可能包括创建`Client`实例,定义`WebTarget`,使用`Invocation.Builder`构建请求,以及处理响应。可能还涉及了...
WebService是Web服务的一种标准协议,它允许不同系统之间进行数据交换和互操作。在IT行业中,我们经常需要调用远程的WebService接口来实现业务逻辑。本文将深入探讨WebService的两种客户端调用方式,并通过源码分析...
* 核心客户端(Core Client):Jersey客户端API帮助您与REST服务轻松通信。 * 集成(Integration):Jersey还提供可以轻松集成Spring、Guice、Apache Abdera的库。 构建RESTful Web服务 ----------------- 要构建...
CXF是一个开源的服务框架,它支持多种Web服务标准,包括SOAP和REST。在CXF中,我们可以创建一个ClientProxy来调用RESTful服务。 示例代码: ```java JAXRSClientFactoryBean client = new ...
Jersey的客户端API使得测试和调用其他REST服务变得简单。 总结起来,构建RESTful Web服务-jersey涉及的知识点包括: 1. RESTful架构风格及其核心概念(HTTP方法、资源、状态码) 2. JAX-RS标准和Jersey框架 3. 使用...
【标题】:“jersey rest web ...通过阅读这份文档,开发者可以深入学习Jersey的各种高级特性,如注入依赖、安全控制、缓存策略、上传下载、客户端API等。熟练掌握这些知识点将有助于开发出高效、灵活的RESTful服务。
在IT行业中,构建RESTful服务已经成为现代Web应用开发的标准实践,它允许客户端和服务端通过HTTP协议进行通信。Jersey是Java平台上的一个轻量级框架,专门用于构建RESTful服务。MyBatis则是一个强大的持久层框架,它...
Jersey 是一个开源的 Java 框架,用于构建基于 JAX-RS(Java API for RESTful Web Services)规范的 RESTful 服务。REST(Representational State Transfer)是一种轻量级的架构风格,广泛应用于互联网应用程序,以...
Jersey提供了一些工具和插件,如Jersey Test Framework用于单元测试REST服务,Jersey Client API用于客户端调用,以及支持集成其他框架,如Spring和CDI。 ### 6. 示例应用 创建一个简单的Jersey应用,包括资源类、...
REST Jersey 是一个基于Java的轻量级RESTful Web服务实现框架,它允许开发者轻松地创建和部署RESTful服务。在Java EE环境中,Jersey通过JAX-RS(Java API for RESTful Web Services)规范提供对REST的支持。本篇文章...
而Jersey则是Java平台上实现RESTful服务的一个开源框架,它提供了全面的API和工具,使得开发者能够轻松地创建和部署RESTful Web服务。 首先,搭建REST服务的关键步骤包括: 1. **环境准备**:确保你已经安装了Java...
RESTful Web服务是一种遵循Representational State Transfer(REST)架构风格的Web服务,由Roy Fielding在其博士论文中提出。这种服务利用HTTP协议中的标准方法(GET、POST、PUT、DELETE)来操作资源,通过URI(统一...
Java RESTful Web服务是基于HTTP协议的轻量级服务接口,它使用了REST(Representational State Transfer,表现层状态转移)架构风格。RESTful服务强调资源的管理和操作,通过URI(Uniform Resource Identifier)来...
6. **客户端API**:Jersey提供了一个强大的客户端API,允许开发者方便地进行RESTful服务的调用和测试。 7. **容器集成**:Jersey可与多种Servlet容器如Tomcat、Jetty等无缝集成,也可作为独立服务器运行。 **五、...
Jersey是实现Java RESTful Web服务(JAX-RS)规范的开源框架,由Sun Microsystems(现Oracle)开发,用于构建高效、灵活的Web应用程序。 jersey-core是Jersey的核心模块,包含实现JAX-RS标准所需的基本组件和服务。...