2

我有一个场景,我需要根据网络情况传输一个或多个文件。文件大小在 700KB 到 900KB 之间。上传完成后,无论上传多少文件,服务器都会回复一个数字。在将其转换为 Base64 后,我一直在尝试使用 ksoap2 库上传它,但它失败了。当我的肥皂标题 xml 大小在 1048000 左右的字符附近时,它会失败。

然后我决定改变我的上传方式,并希望使用 HttpURLConnection 或 http 客户端。我无法决定哪一个对我的场景有效。

谢谢

这是代码

代码:

            InputStream is = getResources()
                    .openRawResource(R.raw.file_name);

            int size = 0;
            // Read the entire resource into a local byte buffer.
            byte[] buffer = new byte[1024];
            try {

                while ((size = is.read(buffer, 0, 1024)) >= 0) {
                    baos.write(buffer, 0, size);
                }

                is.close();
                buffer = baos.toByteArray();
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }


            base64string = new String(Base64.encode(buffer, Base64.DEFAULT));

错误

org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:1 in java.io.InputStreamReader@4101ce48)  
at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:2035)
at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126)
at org.ksoap2.transport.Transport.parseResponse(Transport.java:63)
at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100)
4

1 回答 1

0

我不知道你想使用什么样的服务器。您的文件在上传时停止的问题可能在您的服务器设置中。例如,在您的 php 配置中,您可以定义最大上传文件大小等。这里有一个 php 示例:

public void uploadFile(){


try {
FileInputStream fis =this.openFileInput(NAME_OF_FILE);
HttpFileUploader htfu = new HttpFileUploader("http://11.0.6.23/test2.php","noparamshere", NAME_OF_FILE);
htfu.doStart(fis);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

阅读更多: http: //getablogger.blogspot.com/2008/01/android-how-to-post-file-to-php-server.html#ixzz27YPjwX8B

编辑:您还可以尝试通过实施 MTOM 来提高肥皂传输效率:

查看 MTOM,这是一种 W3C 标准,旨在通过 SOAP 传输二进制文件。

来自维基百科:

    MTOM provides a way to send the binary data in its original binary form, 
    avoiding any increase in size due to encoding it in text.

相关资源:

SOAP 消息传输优化机制http://www.w3.org/TR/soap12-mtom/

消息传输优化机制(维基百科)http://en.wikipedia.org/wiki/MTOM

于 2012-09-26T06:22:37.903 回答