内容长度?需要长度但是设定?

时间:2012-04-19 21:34:11

标签: java android http-post

我正在尝试使用帖子将数据发送到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()));

        }

当我发送帖子请求时,它会返回所需的内容长度,但不是在这里设置的吗?

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

我不知道我在做什么是对的,请帮助,谢谢


编辑 -

当我尝试使用

设置内容长度时
httppost.setHeader("Content-Length", String.valueOf(myFile.length()));

它已经设置了标题。

因此,为什么它被注释掉

3 个答案:

答案 0 :(得分:1)

在我的情况下使用

reqEntity.setChunked(false);

解决了这个问题。

答案 1 :(得分:0)

设置在将数据写入InputStreamEntity时本地使用的OutputStream的内容长度。它不会将该值设置为您的请求的参数。您需要自己设置该标题。

答案 2 :(得分:0)

您可能希望使用MultipartEntity并使用addPart方法添加StringBodyInputStreamBody(或)FileBody