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()));

        }

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

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

不知道我做的对不对,请帮忙,谢谢


编辑 -

当我尝试自己设置内容长度时

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

它回来时已经设置了标题。

因此为什么它被注释掉了

4

3 回答 3

1

在我的情况下使用

reqEntity.setChunked(false);

解决了这个问题。

于 2013-11-15T09:22:04.470 回答
0

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

于 2012-04-19T21:40:36.570 回答
0

您可能想要使用MultipartEntityaddPart并使用带有StringBodyInputStreamBody(或)的方法添加部分FileBody

于 2012-04-19T23:09:28.460 回答