java rest客户端开发_java – 接受并返回对象的REST服务.如何写客户端?

我已经宣布了两个REST Web服务.一个简单的返回一个对象.而其他的接受一个对象并返回另一个对象.

使用POJO Order.

java.

@XmlRootElement

public class Order {

private String id;

private String description;

public Order() {

}

@XmlElement

public String getId() {

return id;

}

@XmlElement

public String getDescription() {

return description;

}

// Other setters and methods

}

Webservice被定义为

@Path("/orders")

public class OrdeRSService {

// Return the list of orders for applications with json or xml formats

@Path("/oneOrder")

@GET

@Produces({MediaType.APPLICATION_JSON})

public Order getOrder_json() {

System.out.println("inside getOrder_json");

Order o1 = OrderDao.instance.getOrderFromId("1");

System.out.println("about to return one order");

return o1;

}

@Path("/writeAndIncrementOrder")

@GET

@Produces({MediaType.APPLICATION_JSON})

@Consumes({MediaType.APPLICATION_JSON})

public Order writeAndIncrementOrder(Order input) {

System.out.println("inside writeAndIncrementOrder");

Order o1 = new Order();

o1.setId(input.getId()+1000);

o1.setDescription(input.getDescription()+"10000");

System.out.println("about to return one order");

return o1;

}

我可以编写客户端代码来调用不接受任何东西但返回对象的Web服务.客户端代码如下

import java.net.URI;

import javax.ws.rs.client.Client;

import javax.ws.rs.client.ClientBuilder;

import javax.ws.rs.client.Invocation.Builder;

import javax.ws.rs.client.WebTarget;

import javax.ws.rs.core.MediaType;

import javax.ws.rs.core.Response;

import javax.ws.rs.core.UriBuilder;

import org.glassfish.jersey.client.ClientConfig;

public class Test {

public static void main(String[] args) {

WebTarget target2 = client.target(getBaseURI()).path("rest").path("orders");

String o2 = target2.path("oneOrder").request().accept(MediaType.APPLICATION_JSON).get(String.class);

System.out.println(o2);

}

private static URI getBaseURI() {

return UriBuilder.fromUri("http://localhost:8090/FirstRESTProject").build();

}

但我不明白如何调用接受的其他服务以及返回对象.

我在互联网上尝试了不同的解决方案但没有什么对我有用一些解决方案只适用于发送对象,一些只适用于接受.但是没有人在一个电话中做这两个工作.

编辑

如下面的建议回答我注册了JacksonJaxbJsonProvider.class但是自动转换为Order对象并没有发生.

String o2 = target2.path("oneOrder").request().accept(MediaType.APPLICATION_JSON).get(String.class);

client.register(JacksonJaxbJsonProvider.class);

Order o4 = target2.path("oneOrder").request().accept(MediaType.APPLICATION_JSON).get(Order.class);

在上面的程序中,我成功获取字符串为{“id”:“1”,“description”:“这是第一个命令”}但是获取直接对象抛出错误

MessageBodyReader未找到媒体类型= application / json,type = class shopping.cart.om.Order,genericType = class shopping.cart.om.Order.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值