InputStreamBody в настройках HttpMime 4.0.3 для длины содержимого - PullRequest
2 голосов
/ 28 декабря 2010

Я пытаюсь отправить сообщение из нескольких частей через мои java-коды. Может кто-нибудь сказать мне, как установить длину контента в следующем ?? Кажется, что при использовании InputStreamBody, который реализует интерфейс ContentDescriptor, возникают заголовки. Выполнение getContentLength для InputStreamBody дает мне -1 после добавления содержимого. Я разделил его на подклассы, чтобы дать contentLength длину моего байтового массива, но не уверен, будут ли другие заголовки, требуемые ContentDescriptor, установлены для правильного POST.

HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(myURL);
ContentBody cb = new InputStreamBody(new ByteArrayInputStream(bytearray), myMimeType, filename);
//ContentBody cb = new ByteArrayBody(bytearray, myMimeType, filename);

MultipartEntity mpentity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
mpentity.addPart("key", new StringBody("SOME_KEY"));
mpentity.addPart("output", new StringBody("SOME_NAME"));
mpentity.addPart("content", cb);
httpPost.setEntity(mpentity);
HttpResponse response = httpclient.execute(httpPost);

HttpEntity resEntity = response.getEntity();

1 Ответ

3 голосов
/ 29 декабря 2010

Я являюсь автором класса ByteArrayBody, который вы закомментировали.

Я написал это, потому что столкнулся с той же проблемой, что и вы. Оригинальный билет Jira здесь: https://issues.apache.org/jira/browse/HTTPCLIENT-1014

Итак, поскольку у вас уже есть байт [], обновите HttpMime до последней версии 4.1-бета1, которая включает этот класс. Или скопируйте код из выпуска Jira в свой собственный проект.

Класс ByteArrayBody сделает именно то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...