Web サービスがあり、クライアントが Web メソッドを介してサーバーにファイルを送信し、クライアントが送信したファイルを読み取るようにしたいと考えています。
Web メソッドは次のとおりです。
@WebMethod(operationName = "getfile")
public void getfile(@WebParam(name = "getfile") DataHandler dh) throws IOException {
InputStream in = dh.getInputStream();
StringWriter writer = new StringWriter();
org.apache.commons.io.IOUtils.copy(in, writer, "UTF-8");
String theString = writer.toString();
System.out.println(theString);
}
そしてクライアントはここからメソッドを呼び出します:
public static void main (String args[]) throws IOException, IOException_Exception{
SOAPService service = new SOAPService();
SOAPProxy = service.getGetXMLPort();
File file = new File("C:\\Users\\manos\\Downloads\\manos.txt");
FileDataSource fd = new FileDataSource(file);
DataHandler datahandler = new DataHandler(fd);
InputStream in = datahandler.getInputStream();
byte [] array = org.apache.commons.io.IOUtils.toByteArray(in);
SOAPProxy.getfile(array);
}
しかし、SOAPProxy.getfile(array); 行で NullPointerException を取得しています。
これはエラーです:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: java.lang.NullPointerException
at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178)
at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129)
at $Proxy32.getfile(Unknown Source)
at com.mantsap.getxmlclient.SOAPClient.main(SOAPClient.java:25)
Java 結果: 1
配列の長さは 8です! 私は確かにsystem.outを作りました。
ファイルmanosは単なるテキストファイルです。
前もって感謝します。:)