这可能听起来像一个简单的问题,但作为Webservies的新手,这是我第一次使用它,所以我怀疑。
问:如何使用Web服务传递对象或复杂类型?我创建了一个简单的Web服务,并传递字符串和整数类型,但我不知道如何使用webservice传递对象,因此任何指导都将受到高度赞赏。
感谢。
答案 0 :(得分:7)
您只需要在服务端序列化对象(生成文本)并在接收者端反序列化(再次生成对象)。多年来,SOAP是标准配置,但是今天JSON变得越来越流行,因为它的开销比SOAP少得多。
如果使用SOAP和Java,您可以尝试Google的GSON,它提供了一个非常易于使用的编程界面。
JSON与GSON:
String jsonized = new Gson().toJson( myComplexObject );
/* no we have a serialized version of myComplexObject */
myComplexObjectClass myComplexObjext = new Gson().fromJson( jsonized, myComplexObjectClass.class );
/* now we have the object again */
对于使用JAX-WS的JSON(我们不使用Apache Axis),请查看这些入门教程:
答案 1 :(得分:3)
如果您正在使用restful Web服务(如果您是http://jersey.dev.java.net,我建议使用Jersey),您可以传递JAXB带注释的对象。 Jersey会自动在客户端和服务器端序列化和反序列化您的对象。
服务器端;
@Path("/mypath")
public class MyResource
{
@GET
@Produces(MediaType.APPLICATION_XML)
public MyBean getBean()
{
MyBean bean = new MyBean();
bean.setName("Hello");
bean.setMessage("World");
return bean;
}
@POST
@Consumers(MediaType.APPLICATION_XML)
public void updateBean(MyBean bean)
{
//Do something with your bean here
}
}
客户方;
//Get data from the server
Client client = Client.create();
WebResource resource = client.resource(url);
MyBean bean = resource.get(MyBean.class);
//Post data to the server
bean.setName("Greetings");
bean.setMessage("Universe");
resource.type(MediaType.APPLICATION_XML).post(bean);
JAXB bean;
@XmlRootElement
public class MyBean
{
private String name;
private String message;
//Constructors and getters/setters here
}
答案 2 :(得分:0)
如果需要,您可以传递json或使用xmlserialization。