我有一个.p12文件,我想上传到SOAP Web服务,以便我的应用程序可以发出请求以便以后获取它。如何上传此文件?
我不一定想在我的应用程序代码中使用它,因为它只是我想做的一次。但是,如果重要的话,我正在使用Java。
答案 0 :(得分:2)
如果服务支持,你应该看看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
答案 1 :(得分:0)
将文件作为流读取并通过网络发送。就是这样。
答案 2 :(得分:0)
在服务器端发送编码字符串和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(); } } }