2

状況に応じてネットワーク経由で 1 つ以上のファイルを転送する必要があるシナリオがあります。ファイルのサイズは 700KB から 900KB です。アップロードが完了すると、アップロードされたファイルの数に関係なく、サーバーは 1 つの数字で応答します。Base64に変換した後、ksoap2ライブラリでアップロードしようとしていますが、失敗しました。SOAPヘッダーの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を実装することで、石鹸の転送をより効率的にすることもできます。

バイナリファイルをSOAP経由で転送するように設計されたW3C標準であるMTOMを確認してください。

ウィキペディアから:

    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 に答える