Tag: jersey

jackson在json中添加了反斜杠

我正在Jersey上构建REST服务,并使用Jackson从我的模型的java类生成JSON。 模型具有绝对简单的值,我认为这是最典型的情况。 但我得到了奇怪的结果: [{\”name\”:\”Nick\”,\”role\”:\”admin\”,\”age\”:\”32\”,\”rating\”:47}] 我期待的结果: [{“name”:”Nick”,”role”:”admin”,”age”:”32″,”rating”:47}] 我的字段源值不包含任何特殊字符。 这些都是简单的话。 有我的Java课程。 实体: public class User { private String name; private String role; private String age; private Integer rating; rest服务类别: @ServiceConfig(contextName = “myContext”) @Path(“/myrest”) public class MyRestService { private static final String JSON_CONTENT_TYPE = MediaType.APPLICATION_JSON + “;charset=UTF-8”; @Context protected HttpServletResponse response; @GET @Path(“/users”) @OpenTransaction @Produces({MediaType.APPLICATION_JSON}) public String findUsers(@QueryParam(“department”) […]

如何使用泽西发送NTLM认证的post请求?

我正在使用Java对Sharepoint 2013进行restapi调用。 如何使用泽西rest客户端连接到sharepoint 2013? 注意:目前我使用的是apache http组件和NTCredentials类 Credentials credentials=new NTCredentials(username, password, workstation, domain); AuthScope authScope=new AuthScope(AuthScope.ANY); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(authScope,credentials); CloseableHttpClient httpclient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); 如何将此采用到Jersey框架?

泽西+jackson反序列化失败与日期对象

我正在使用jersey和jackson来开发我的REST API,并且在反序列化日期字符串时遇到问题。 我在泽西岛注册了一个提供者类: @Provider public class MyJsonProvider extends JacksonJsonProvider { public static final String DATE_FORMAT = “yyyy-MM-dd HH:mm:ss”; @Override public void writeTo(Object value, Class type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException { ObjectMapper mapper = locateMapper(type, mediaType); // Enable human readable date format SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); […]

如何在Jersey客户端的DELETE请求中发送封装数据?

我在Jersey 2.x中有以下服务器端代码: @Path(“/store/remove/from/group”) @DELETE @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces(MediaType.TEXT_PLAIN) public Response removeStoresFromGroup(@FormParam(“storeName”) List storeNames, @FormParam(“groupName”) String groupName) { //…… } 在客户端,我想使用Jersey 2.x客户端向上述Web服务发送删除请求。 但是,从Jersey客户端API的文档中,我没有找到如何在DELETE请求中包含以下数据: WebTarget webTarget = client.target(“/store/remove/from/group”); MultivaluedMap formData = new MultivaluedHashMap(); List storeName = new ArrayList(); storeName.add(“Store1”); storeName.add(“Store2”); storeName.add(“Store3”); formData.addAll(“storeName”, storeName); formData.add(“groupName”, “Group A”); Response response = webTarget.request().accept(MediaType.TEXT_PLAIN).delete(); //The delete() method doesn’t take any entity body in […]

使用JarJar重新包装工具

我已将Web应用程序部署到Google应用程序引擎,而我的Web服务使用了jersey 1.14框架。 当我尝试在GAE上使用或调用Web服务时,我得到了一个java.lang.IncompatibleClassChangeError:实现类。 我四处搜索并意识到jersey 1.14依赖于asm 3.1而google app引擎使用asm 4.0并意识到我必须使用JarJar打包依赖项来解决这个问题,但我不知道如何做到这一点与JarJar。 我发现的教程非常神秘,面向体验程序员。所以有人可以发布面向初学者的教程或者指导我完成解决这个问题的步骤。

Jersey / JAX-RS:在响应头中返回Content-Length而不是chunked transfer encoding

我使用Jersey创建RESTful API资源,使用ResponseBuilder生成响应。 RESTful资源的示例代码: public class infoResource{ @GET @Path(“service/{id}”) @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Response getCompany(@PathParam(“id”)String id) { //company is just a POJO. Company company = getCompany(id); return Response.status(200).entity(company).build(); } } 在响应中,它在响应头中返回分块传输编码。 “Jersey world”中的正确方法是让它返回Content-Length标头而不是Transfer-Encoding: chunked响应头中的Transfer-Encoding: chunked标头?

如何在Dropwizard(Jersey)中记录JSON响应

我想知道如何配置Dropwizard来记录JSON响应。

ResourceContext.matchResource(URI)的Jersey 2替换是什么?

如何在Jersey 2.0下找出任意URI映射到的资源? 在Jersey 1.x下,我使用ResourceContext.matchResource(URI) 。 我正在尝试做什么 :我正在尝试处理通过URI引用另一个资源的传入请求。 例如,这是将用户链接到部门的操作。 POST /departments/5 { “user”: “http://example.com/users/10” } POST / departments / 5解析为: class DepartmentResource { @POST void linkUser() { … } } 为了兑现这个请求,我需要将URI解析回UserResource并从那里解析为其数据库ID。 将@Context UriInfo添加到linkUser()将无济于事,因为此UriInfo对应于部门的URI而不是用户的URI。 更新 :我在https://github.com/eclipse-ee4j/jersey/issues/2444上提交了一份错误报告 UPDATE2 :发布了一个后续问题: Jersey2:从资源导航到实例

在泽西请求中获取客户端区域设置

在Jersey(JAX-RS)请求的上下文中获取客户端区域设置的最佳和更便携的方法是什么? 我有以下代码: @GET @Produces(“text/html”) @Path(“/myrequest”) public Response myRequest(@Context HttpServletRequest request) { Locale locale = … } 请假设“请求”是由浏览器中的一些javascript代码通过调用window.location = …;

使用JAX-RS在REST API中进行error handling

任务:我没有在我的堆栈跟踪中接收一般的HTTP 500 Internal Server Error ,而是在客户端上同样可怕的堆栈跟踪,我希望看到我的另一个状态代码(例如403 )的自定义消息,对于开发人员来说,它会更加清晰,发生了什么事。 并向用户添加一些关于exception的消息。 以下是我的应用程序中的几个更改的类: 服务器部分: AppException.class – 我的所有服务器响应exception(在回馈客户端之前)我想转换为此exception。 有点标准实体类 public class AppException extends WebApplicationException { Integer status; /** application specific error code */ int code; /** link documenting the exception */ String link; /** detailed error description for developers */ String developerMessage; public AppException(int status, int code, String message, String […]