@Path("data")
public class MyResource {
@Inject
MyService service;
@POST
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public byte[] init() {
return service.init();
}
@POST
@Produces(MediaType.APPLICATION_OCTET_STREAM)
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
public byte[] work(byte[] data) {
return service.work(data);
}
}
org.jboss.resteasy.spi.BadRequestException: content-type was null and expecting to extract a body into public javax.ws.rs.core.Response rest.MyResource.work(byte[])
at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:131)
at org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInjectorImpl.java:114)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)
at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:252)
at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:217)
at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:206)
at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:514)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:491)
at org.jboss.resteasy.core.SynchronousDispatcher.invokePropagateNotFound(SynchronousDispatcher.java:140)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:204)
at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:59)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
是否有一种方法可以通过JAX-RS来解决这个问题,或者我必须回到servlet来处理这个特定的情况?
我不能重现这个问题。考虑以下JAX-RS方法:
@POST
@Path("/bytes")
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
public Response postOctetStream(byte[] bytes) {
return Response.ok(bytes.length).build();
}
考虑以下curl
调用:
$ curl -v -X POST -H "Content-Type: application/octet-stream" -d "" http://localhost:8080/WebApplication4/webresources/bytes
* About to connect() to localhost port 8080 (#0)
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> POST /WebApplication4/webresources/foo/bytes HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost:8080
> Accept: */*
> Content-Type: application/octet-stream
> Content-Length: 0
>
< HTTP/1.1 200 OK
< X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition 4.0 Java/Oracle Corporation/1.7)
< Server: GlassFish Server Open Source Edition 4.0
< Content-Type: text/plain
< Date: Mon, 09 Dec 2013 10:56:55 GMT
< Content-Length: 1
<
如您所见,客户机设置content-length:0
。服务器可以将这个空正文映射到一个零长度的字节[]
。
问题内容: 我正在尝试自己学习编程,但仍在尝试掌握它。我收到以下错误: java.io.IOException:句柄无效 这是我的代码 我相信,每当我调用该方法时,都会出现错误,当我尝试显示默认构造函数中的字节数时,它可以很好地工作并显示。 问题答案: 好了,在实际开始使用它之前,请先关闭构造函数的块。将结束部分从构造函数中移到完成后将被调用的位置,例如在main 下方调用或单独的close方法。
句柄是什么?在Windows中,句柄的存在就像指针的标识一样,但这样的答案显示不是你们需要的。闲暇之余,笔者摘录以下Windows句柄的解释。用户可以端着咖啡再看Windows结构体里面句柄的作用表述。 这里我列举词条中的关于句柄的叙述不当之处,至于如何不当先不管,继续往下看就会明白: 句柄是什么? Windows 之所以要设立句柄,根本上源于内存管理机制的问题—虚拟地址,简而言之数据的地址需要变
问题内容: 我看起来像这样 我需要选择按钮。但是由于它们都具有相同的名字,我不能通过书写来做到。如果我使用不同的名称,则用户可以进行多个选择。 是否没有办法通过其ID获取按钮的状态?如果没有,处理此表格的最简单方法是什么? 问题答案: 你应该将属性添加到每个字段中: 在烧瓶路径中,你可以阅读所选的选项: 然后你将获得所选单选按钮的。
如何使用方法句柄调用私有方法? 据我所知,只有两种可公开访问的实例: 方法andles.lookup 两者都不允许不受限制的私人访问。 还有非公开的这就是我想要的。是否有某种公开的方式获得它(假设SecurityManager允许)?
在书写代码与阅读代码的时候,经常会看到这一句代码: typedef void *HANDLE ,它是何方神圣呢?如何理解呢? 不理解它的时候,感觉它很神奇,知道它以后,它就是个typedef的定义,只不过是void*类型罢了,也就是HANDLE等价于void *,我们可以叫它披着句柄皮的指针(PS:指针和句柄是有区别的,在这说句废话); 对于void* 神通广大,因为它作为函数参数or函数返回值,
背景。 我的操作系统是Win7 64bit。 我的Python是2.7 64bit(来自Python-2.7.8.amd64.msi) 我的cx_Oracle是5.0 64bit(来自Cx_Oracle-5.0.4-10g-Unicode.win-amd64-py2.7.msi) 我的Oracle客户端是10.1(我不知道32或64 arch,但SQL*Plus是10.1.0.2.0 数据库为 O