繁体   English   中英

如何将文件上传到SOAP Web服务?

[英]How to upload a file to a SOAP web service?

我有一个.p12文件,我想上传到SOAP Web服务,以便我的应用程序可以请求以后获取它。 如何上传此文件?

我不一定在我的应用程序代码中想要这个,因为它只是我想做的一次。 但是,如果重要的话,我正在使用Java。

如果服务支持,你应该看一下MTOM。 如果它接受文件附件,那么它可能使用MTOM。 通过将其保留在应用程序代码之外不确定您的意思,但是如何创建和发送附件取决于您正在使用的Web服务平台。 以下是有关在Java的JAX-WS中发送附件的最新文档:

http://metro.java.net/guide/ch06.html#binary-attachments-mtom

如果您想以与语言无关的方式查看实际发生的情况,请抓住SoapUI并将其设置为使用MTOM发送附件:

http://www.soapui.org/SOAP-and-WSDL/adding-headers-and-attachments.html

将文件作为流读取并通过网络发送。 就这样。

在服务器端发送编码字符串和Base64.decode文件字符串

 String strAttachmentCoded = ""; private int PICK_PDF_REQUEST = 1; Uri filePath; @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_PDF_REQUEST && resultCode == Activity.RESULT_OK && data != null && data.getData() != null) { filePath = data.getData(); File uploadFile = new File(filePath.toString()); URI uri = URI.create(uploadFile.getPath()); try { if (uploadFile != null) { File uploadFile1 = new File(uri); FileInputStream objFileIS = new FileInputStream(uploadFile1); ByteArrayOutputStream objByteArrayOS = new ByteArrayOutputStream(); byte[] byteBufferString = new byte[1024]; int readNum; readNum = objFileIS.read(byteBufferString); while (readNum != -1) { Log.v(" ", "" + readNum); objByteArrayOS.write(byteBufferString, 0, readNum); // system.out.println("read " + readNum + " bytes,"); readNum = objFileIS.read(byteBufferString); } byte[] byteBinaryData = Base64.encode(objByteArrayOS.toByteArray(), Base64.DEFAULT); strAttachmentCoded = String.valueOf(byteBinaryData); } } catch (Exception e) { e.printStackTrace(); } } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM