我有一个 .p12 文件,我想将它上传到 SOAP Web 服务,以便我的应用程序可以请求稍后获取它。我如何上传这个文件?
我不一定要在我的应用程序代码中使用它,因为这是我只想做一次的事情。但是,如果重要的话,我正在使用 Java。
我有一个 .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(); } } }