栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

无法将JSON对象发送到Rest Web服务

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无法将JSON对象发送到Rest Web服务

您正在执行:

User user = new User((long) 451, "mosssi", "464asd64");ClientResponse response = r.accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, user);

这是不对的。您应该将真实的JSON字符串发送到您的服务。

获取JSON解析器,例如:gson,然后执行以下操作:

User user = new User(451, "mosssi", "464asd64");String request = gson.toJson(user);ClientResponse response = r.type(MediaType.APPLICATION_JSON).post(ClientResponse.class, request );

不要使用旧的泽西捆绑图书馆。下载2.0版本:https:
//jersey.java.net/download.html

将所有库(库和ext库)添加到您的类路径中。

接下来,您需要在类路径中使用jackson软件包:jackson-annotations-2.2.2.jar jackson-core-2.2.2.jar
jackson-databind-2.2.2.jar jackson-jaxrs-base-2.2.1.jar -jaxrs-json-
provider-2.2.1.jar jackson-module-jaxb-annotations-2.2.2.jar

您的服务等级应与此类似:

package anyq.server.anyq.manager;import javax.ws.rs.Consumes;import javax.ws.rs.POST;import javax.ws.rs.Path;import javax.ws.rs.core.Context;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;import javax.ws.rs.core.UriInfo;import anyq.server.common.bean.User;@Path("/users")public class AnyQUserManager {@ContextUriInfo uriInfo;@POST@Consumes(MediaType.APPLICATION_JSON)public Response createUser(User user) {    System.out.println("HELLO WORLD");    return Response.status(666).entity("Hello world").build();}}

最后,您的web.xml应该如下所示:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"><servlet>    <servlet-name>Jersey REST Service</servlet-name>    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>    <init-param>        <param-name>jersey.config.server.provider.packages</param-name>        <param-value>anyq.server.anyq.manager, com.fasterxml.jackson.jaxrs.json</param-value>    </init-param>    <load-on-startup>1</load-on-startup></servlet><servlet-mapping>    <servlet-name>Jersey REST Service</servlet-name>    <url-pattern>/rest/*</url-pattern></servlet-mapping>

在您的客户端类中,执行以下操作:

    String USER_URI = "http://localhost:8080/AnyQserver/rest/users";    User user = new anyq.server.common.bean.User();    user.setUserId(15);    user.setUserName("asd");    user.setUserPassword("asd");    Client client = Client.create();    String request = new Gson().toJson(user);    System.out.println(request);    WebResource r = client.resource(USER_URI);    ClientResponse response = r.type(MediaType.APPLICATION_JSON).post( ClientResponse.class, request);    System.out.println(response.getStatus());

重新启动服务器并运行客户端。如果一切正常,服务器应打印:

INFO: Server startup in 2256 msHELLO WORLD

和客户:

{"userId":15,"userName":"asd","userPassword":"asd"}666

祝好运!

另外,我真的建议您迁移到Maven。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号