【发布时间】:2013-05-26 14:34:31
【问题描述】:
我正在尝试将二进制文件(图片)发送到在 Glassfish 中运行的 RESTful Web 服务。 我找到了应该这样做的代码 Upload data method in REST web service 和其他几个类似的帖子,但都不起作用。 这是我的代码:
@POST
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
public String post( InputStream payload ) throws IOException
{
return "Payload size="+payload.available();
}
@POST
@Path("bytes")
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
public String post( byte[] payload )
{
return "Payload size="+payload.length;
}
接收InputStream的方法返回:
Payload size=0
接收byte[]的方法返回:
Error 500 - Internal Server Error
错误 500 是由这个异常引起的:
Caused by: java.lang.NullPointerException
at com.sun.jersey.moxy.MoxyMessageBodyWorker.typeIsKnown(MoxyMessageBodyWorker.java:110)
at com.sun.jersey.moxy.MoxyMessageBodyWorker.isReadable(MoxyMessageBodyWorker.java:133)
at com.sun.jersey.core.spi.factory.MessageBodyFactory._getMessageBodyReader(MessageBodyFactory.java:345)
at com.sun.jersey.core.spi.factory.MessageBodyFactory._getMessageBodyReader(MessageBodyFactory.java:315)
at com.sun.jersey.core.spi.factory.MessageBodyFactory.getMessageBodyReader(MessageBodyFactory.java:294)
at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:449)
at com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123)
at com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:46)
... 40 more
非常感谢任何建议。
【问题讨论】:
-
我强烈建议您删除其中一个标签,以便为“java”腾出空间
-
@MrD 好主意。完毕。谢谢。
标签: java web-services rest file-upload jersey