0

投稿を使用してWebサーバーにデータを送信しようとしていますが、これは私がこれまでに持っているものです:

private void entity(String id, String file)
                throws JSONException, UnsupportedEncodingException, FileNotFoundException {
             // Add your data
            File myFile = new File(
                    Environment.getExternalStorageDirectory(), file);
            InputStreamEntity reqEntity = new InputStreamEntity(
                    new FileInputStream(myFile), myFile.length());

            reqEntity.setContentType("text/csv");
            reqEntity.setChunked(true); // Send in multiple parts if needed

            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
            nameValuePairs.add(new BasicNameValuePair("project", id));

            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            httppost.setEntity(reqEntity);

            //httppost.setHeader("Content-Length", String.valueOf(myFile.length()));

        }

投稿リクエストを送信すると content-length required が返ってきますが、ここで設定されていませんか?

InputStreamEntity reqEntity = new InputStreamEntity(
                    new FileInputStream(myFile), myFile.length()); 

私がしていることが正しいかどうかわかりません、助けてください、ありがとう


編集 -

自分で content-length を設定しようとすると

httppost.setHeader("Content-Length", String.valueOf(myFile.length()));

ヘッダーが既に設定された状態で戻ってきます。

したがって、コメントアウトされている理由

4

3 に答える 3

0

MultipartEntityを使用し、および(または)を使用しaddPartたメソッドを使用してパーツを追加することができます。StringBodyInputStreamBodyFileBody

于 2012-04-19T23:09:28.460 に答える
0

InputStreamEntityにデータを書き込むときにローカルで使用されるのコンテンツの長さを設定しOutputStreamます。その値は、リクエストのパラメーターとして設定されません。そのヘッダーを自分で設定する必要があります。

于 2012-04-19T21:40:36.570 に答える