2009-11-06 41 views
4

我是Java Web服務的新手,所以我可能會做錯事。Java Web服務:使用DataHandler類發送文件

我試圖轉移使用的DataHandler文件 - 這就是我的了:

Web服務:

import java.net.MalformedURLException; 
import java.net.URL; 
import javax.activation.DataHandler; 
import javax.jws.WebMethod; 
import javax.jws.WebParam; 
import javax.jws.WebService; 
import javax.xml.bind.annotation.XmlMimeType; 

/** 
* 
* @author pc1 
*/ 
@WebService() 
public class WSFileSender { 

    @WebMethod(operationName = "getfile") 
    public @XmlMimeType("application/octet-stream") DataHandler getfile(@WebParam(name = "path") String path) { 

     DataHandler datahandler = null; 

     try { 
      datahandler = new DataHandler(new URL(path)); 
     } 
     catch (MalformedURLException e) { 
      System.out.println("Bad"); 
     } 

     return datahandler; 
    } 

} 

客戶:

package fileclient; 

import java.io.FileOutputStream; 
import java.io.OutputStream; 
import javax.activation.DataHandler; 

/** 
* 
* @author pc1 
*/ 
public class Main { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

     try { 
      fspg.WSFileSenderService service = new fspg.WSFileSenderService(); 
      fspg.WSFileSender port = service.getWSFileSenderPort(); 

      DataHandler handler = port.getfile("FileSender/file.jpg"); 

      OutputStream out = new FileOutputStream("dest.jpg"); 

      handler.writeTo(out); 

      out.close(); 

      System.out.println("Done"); 

     } catch (Exception ex) { 
     // TODO handle custom exceptions here 
    } 

    } 

} 

看來,就好像一切正​​常,但創建的文件是空的 - 我做錯了什麼?

================= EDIT ==================

的DataHandler對象通過返回GETFILE ()爲空 - 是不可能從webservice返回這個對象?

回答

2

如果DataHandler返回的是null我的猜測會出現該方法出錯(例如您正在捕獲的MalformedURLException)。如果不是,您可以嘗試以不同的方式創建DataHandler,例如與FileDataSourceByteArrayDataSource

+0

FileDataSource正常工作,謝謝 – zbigh 2009-11-06 12:28:42

相關問題