- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当 Content-Type
header 中指定了 charset
属性时,Jersey 2.0(使用 servlet 3.1)似乎无法解码参数。
例如考虑以下端点:
@POST
@Path("/hello")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response hello(@FormParam("name") String name) {
System.out.println(name);
return ok();
}
此 curl 请求有效:
curl -X POST -H "content-type: application/x-www-form-urlencoded" -d "name=tom" http://localhost:8080/sampleapp/hello
以下请求不起作用并且name
参数为null
:
curl -X POST -H "content-type: application/x-www-form-urlencoded; charset=UTF-8" -d "name=tom" http://localhost:8080/sampleapp/hello
我认为在内容类型中添加 charset=UTF-8
破坏了我的代码。
编辑:
我已经打开了一张官方票以防这是一个错误:https://java.net/jira/browse/JERSEY-1978
最佳答案
我认为这是一个错误。
有一个打开的请求请求来支持这个用例: https://github.com/jersey/jersey/pull/24/files
与此同时,我建议使用过滤器来删除有问题的编码。
EDIT 根据 OP 评论
我正在考虑以下方面的事情:
@Provider
@PreMatching
public class ContentTypeFilter implements ContainerRequestFilter{
@Override
public void filter(ContainerRequestContext requestContext)
throws IOException {
MultivaluedMap<String,String> headers=requestContext.getHeaders();
List<String> contentTypes=headers.remove(HttpHeaders.CONTENT_TYPE);
if (contentTypes!=null && !contentTypes.isEmpty()){
String contentType= contentTypes.get(0);
String sanitizedContentType=contentType.replaceFirst(";.*", "");
headers.add(HttpHeaders.CONTENT_TYPE, sanitizedContentType);
}
}
}
关于java - 当在 Content-Type 中指定字符集时,Jersey 和 @FormParam 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602432/
我有一个方法可以返回父记录的所有子记录(例如文档和行): public Datasource getSonsFromParent( @FormParam(value = "idparent") Lon
由于在此应用程序中动态创建 html 表单元素,因此元素的数量未知。如何使用@FormParam注解获取元素信息?例如,下面的代码获取两个表单元素的信息: @POST @Path("/
我的 html 中有以下内容 function myForm() { var url = 'rest/products/details/'; var fo
我将以下内容从浏览器传递到服务器 Status Code:204 No Content Request Method:POST Content-Type:application/x-www-form-
我正在使用最新版本的 Spring。我必须与A公司的第三方服务器集成。现在,A公司给了我这个代码: Path("/user") public class CallBacks { String
我正在使用 Indy10。我的服务器正在处理表单发布。 ARequestInfo.FormParams 正确包含未解析的表单参数。但是 ARequestInfo.Params.count 是 0。有没
我有 HTML 表单数据并被传递给 RESTful POST 方法。我注意到如果@FormParam 声明为 @POST public void commitProjects( @FormParam(
我正在为书籍和内容开发 Java“JAX-RS”Web 服务。将会有数百个类似的 URL ... https://api.example.com/v1.3/book1/chapter/1 https:
在 Java 中,我正在实现一个服务器,客户端可以在其中使用后查询传递一些数据(键值对)。我已经决定制作一个 REST 服务,并且我计划将 JAX-RS 与 Jetty 一起使用。 我之前不知道要发送
@FormDataParam 和@FormParam 有什么区别? 我在一个方法中使用了多个 @FormDataParam 但它抛出了媒体不支持的类型错误。但是当我使用 @FormParam 时,我得
谁能帮我解决这个问题。 我使用resteasy 和wildfly 8.1.0 创建了一个Web 服务,但@FormParam 总是返回null。 用户服务.java Path("/user") @Pr
因此,我在 Felix 框架内使用 Amdatu 来创建支持 OSGi 的 JSON Rest 服务。 当我使用@GET时,我得到了预期的id值 @GET @Produces(MediaType.AP
我正在制作一个REST客户端,它接收一个POST,其中包含用作查询的过滤器的数据。我的问题是当客户向我发送 "%" 来搜索所有值时。 Jersey 向我发送以下错误 11:36:35,857 ERRO
我正在使用 Java 和 Jersey 1.16。 @FormParam 参数的名称区分大小写吗?我可以以某种方式强制它不区分大小写吗? (希望以某种全局性的方式)。 最佳答案 您可以过滤请求: pu
我正在开发一个服务器端应用程序(不是客户端)。我有一个列表操作,其中使用 @GET 并将参数作为 @QueryParam 传递。我应该使用@FormParam 吗?对开发客户端有帮助吗? 最佳答案 @
我正在尝试通过 POST 向 RestAssured 端点提交一些 JSON。 API 需要一个 key 列表。我需要发送的值是一个包含单个项目的列表。 理想的请求如下: Request method
如果我有类似的东西: @PUT @Path("/login") @Produces({"application/json", "text/plain"}) @Consumes("application
我正在使用 Resteasy 学习 Web 服务 我正在做一个简单的基本示例,使用 @FormParam 轻松休息。我的示例在请求方法为 POST 时有效但是当我将请求方法更改为 GET 时不起作用
客户: 我确实像这样在 angular2 中发帖: doSelectMessagesAttributesUrl2(pushRequest : PushRequest) { console.in
免责声明:我确实详尽地搜索了这个问题的答案,是的,我确实找到了另一个问题:https://stackoverflow.com/questions/10315728/how-to-send-parame
我是一名优秀的程序员,十分优秀!