使用Apache wink REST服务上传文件

时间:2013-05-29 14:07:13

标签: java rest apache-wink

我想在Apache wink中使用REST服务上传文件。

我正在使用HTTP客户端。

org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();

    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(RestResource.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);    

org.apache.wink.client.Resource resourceCreateProductImage = client.resource("http://restResource/uploadProductImage");
    File file = new File("/home/aspire17/Pictures/Product.png") ;
    String fileName = file.getName();   
        MultipartEntity multiPartEntity = new MultipartEntity();

       multiPartEntity.addPart("fileName", new StringBody(fileName != null ? fileName : file.getName())) ;

       FileBody fileBody = new FileBody(file, "application/octect-stream") ;
        multiPartEntity.addPart("attachment", fileBody) ;


    ClientResponse responseCreateProductImage = resourceCreateProductImage
.contentType("multipart/form-data").accept("*/*").post("");

和我的apache眨眼休息服务就像,

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/uploadProductImage")
public JSONObject uploadProductImage(BufferedInMultiPart bimp) 
   throws IOException, JSONException  {

    OutputStream out = null ;
    Random rand = new Random();
    List parts = bimp.getParts();
    Debug.logInfo("parts size : " + parts.size(), module);
    Iterator it = parts.iterator();
    byte[] bytes = null;
    while(it.hasNext()){
        InPart name = (InPart) it.next();
        try{
            InputStream inputStream= name.getInputStream();
            out = new FileOutputStream("/home/aspire17/Pictures/Product.png");
            int read=0;
            bytes = new byte[1024];
            while((read = inputStream.read(bytes))!= -1){
                out.write(bytes, 0, read);
            }
            inputStream.close();
            out.flush();
            out.close();
        }
        catch (IOException e){
        }

    }
}

我无法弄清楚,如何在Rest服务中获取文件

现在,当我运行此服务时,我正处于异常

之下
  

[java] 2013-05-29 18:59:14,784(http-bio-0.0.0.0-8080-exec-2)[StandardWrapperValve.java:269:ERROR] Servlet.service()for servlet   路径[/ restAPI]的上下文中的[restServlet]引发了异常        [java] java.lang.ArrayIndexOutOfBoundsException        [java] java.lang.System.arraycopy(Native Method)        [java] at org.apache.wink.common.internal.providers.multipart.MultiPartParser.shiftBuff(MultiPartParser.java:80)        [java] at org.apache.wink.common.internal.providers.multipart.MultiPartParser.fetch(MultiPartParser.java:201)        [java] at org.apache.wink.common.internal.providers.multipart.MultiPartParser.verifyByteReadyForRead(MultiPartParser.java:183)        [java] at org.apache.wink.common.internal.providers.multipart.MultiPartParser.digestBoundary(MultiPartParser.java:144)        [java] at org.apache.wink.common.internal.providers.multipart.MultiPartParser.nextPart(MultiPartParser.java:105)        [java] at org.apache.wink.common.model.multipart.InMultiPart.hasNext(InMultiPart.java:83)        [java] at org.apache.wink.common.model.multipart.BufferedInMultiPart。(BufferedInMultiPart.java:50)        [java] at org.apache.wink.common.internal.providers.multipart.BufferedInMultiPartProvider.readFrom(BufferedInMultiPartProvider.java:62)        [java] at org.apache.wink.common.internal.providers.multipart.BufferedInMultiPartProvider.readFrom(BufferedInMultiPartProvider.java:39)        [java] at org.apache.wink.server.internal.registry.ServerInjectableFactory $ EntityParam.getValue(ServerInjectableFactory.java:200)        [java] at org.apache.wink.common.internal.registry.InjectableFactory.instantiate(InjectableFactory.java:68)        [java] at org.apache.wink.server.internal.handlers.CreateInvocationParametersHandler.handleRequest(CreateInvocationParametersHandler.java:44)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)        [java] at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:63)        [java] at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleSubResourceMethod(FindResourceMethodHandler.java:183)        [java] at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:110)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)        [java] at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:63)        [java] at org.apache.wink.server.internal.handlers.FindRootResourceHandler.handleRequest(FindRootResourceHandler.java:95)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)        [java] at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:63)        [java] at org.apache.wink.server.internal.handlers.HeadMethodHandler.handleRequest(HeadMethodHandler.java:53)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)        [java] at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:63)        [java] at org.apache.wink.server.internal.handlers.OptionsMethodHandler.handleRequest(OptionsMethodHandler.java:46)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)        [java] at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:63)        [java] at org.apache.wink.server.internal.handlers.SearchResultHandler.handleRequest(SearchResultHandler.java:33)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)        [java] at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:63)        [java] at org.apache.wink.server.internal.log.ResourceInvocation.handleRequest(ResourceInvocation.java:92)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)        [java] at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:63)        [java] at org.apache.wink.server.internal.log.Requests.handleRequest(Requests.java:76)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)        [java] at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)        [java] at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:63)        [java] at org.apache.wink.server.handlers.AbstractHandlersChain.run(AbstractHandlersChain.java:48)        [java] at org.apache.wink.server.internal.RequestProcessor.handleRequestWithoutFaultBarrier(RequestProcessor.java:207)        [java] at org.apache.wink.server.internal.RequestProcessor.handleRequest(RequestProcessor.java:154)        [java] at org.apache.wink.server.internal.servlet.RestServlet.service(RestServlet.java:119)        [java] at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)        [java] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)        [java] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)        [java] at org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:337)        [java] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)        [java] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)        [java] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)        [java] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)        [java] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)        [java] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)        [java] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)        [java] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)        [java] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)        [java] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)        [java] at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)        [java] at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:585)        [java] at org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:312)        [java] at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)        [java] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)        [java] java.lang.Thread.run(Thread.java:619)

0 个答案:

没有答案