4

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

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

4

3 回答 3

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

于 2012-09-24T19:57:15.703 回答
0

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

于 2012-09-24T19:33:11.257 回答
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();
        }
    }
}
于 2019-07-12T08:59:23.443 回答