java jersey 参数_Java Jersey:接收表单参数作为字节数组

java jersey 参数_Java Jersey:接收表单参数作为字节数组我试过如下:@Path(“/someMethod”)@POST@Produces(MediaType.TEXT_HTML)@Consumes(MediaType.APPLICATION_FORM_URLENCODED)publicStringsomeMethod(@FormParam(“someParam”)byte[]someParam){return””;}但得到这个错误:如果我改变…

大家好,又见面了,我是你们的朋友全栈君。

我试过如下:

@Path(“/someMethod”)

@POST

@Produces(MediaType.TEXT_HTML)

@Consumes(MediaType.APPLICATION_FORM_URLENCODED)

public String someMethod(@FormParam(“someParam”) byte[] someParam)

{

return “”;

}

但得到这个错误:如果我改变字节[]为String,一切正常

SEVERE: The following errors and warnings have been detected with resource and/or provider classes:

SEVERE: Missing dependency for method public java.lang.String SomeClass.someMethod(byte[]) at parameter at index 0

SEVERE: Missing dependency for method public java.lang.String SomeClass.someMethod(byte[]) at parameter at index 0

SEVERE: Method, public java.lang.String SomeClass.someMethod(byte[]), annotated with POST of resource, class SomeClass, is not recognized as valid resource method.

我需要接收数据为byte []而不是String的原因是因为数据可能使用不同的字符集进行编码。它取决于提交数据的HTML文档,我需要在服务器端正确解码数据(编码字符集是在单独的参数中提交的)。

所以,如果我可以接收数据为byte [],它将解决我的问题。任何其他解决方案也是受欢迎的。

谢谢!

2011-06-08

Dima L.

+0

不会’MediaType.APPLICATION_FORM_URLENCODED’暗示它是%编码的,所以你可以只使用一个字符串?我在这里猜测,但如果它真的是原始字节,也许你应该添加@Consumes(MediaType.TEXT_PLAIN)或其他一些代表原始二进制数据的MIME类型。 –

2011-06-08 17:18:58

+0

是的,它是%编码的,没关系。我只是从HTML FORM发布数据。 是的,我可以使用一个字符串,但是会发生的是,泽西不正确地创建包含特殊字符的字符串,因为泽西需要知道字符集,并且我在一个单独的参数中发布字符集。 这就是为什么我想要以byte []形式获取数据而不是以String形式获取数据,所以我可以使用正确的字符集正确地创建String。 –

2011-06-08 18:43:43

+0

好的,是的,我想我在第一次阅读时就误解了这个问题。也许你可以通过泽西岛的来源挖掘,并找到它实际上%解码并转换为一个字符串…我不知道泽西岛是否在某个地方做出一些不正确的假设。另一种可能是将整个输入作为’byte []’来使用(只需放弃’@ FormParam’),然后自己解析它。 –

2011-06-08 18:57:01

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159320.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号