mtomy wrote:
Hello.

I'm using HttpClient 4.0 in my project. Firstly i'm submitting multipart
form this way:

    HttpPost httpPost = new HttpPost("http://[host here]/in.php");

    MultipartEntity entity = new
MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
    entity.addPart("method", new StringBody("post"));
    entity.addPart("key", new StringBody("223fwe0923fjf23"));
    FileBody fileBody = new FileBody(new File("photo.jpg"), "image/jpeg");
    entity.addPart("file", fileBody);
    httpPost.setEntity(entity);

HttpResponse response = httpClient.execute(httpPost); HttpEntity result = response.getEntity();

    String responseString = "";
    if (result != null) {
        InputStream inputStream = result.getContent();

        byte[] buffer = new byte[1024];
        while(inputStream.read(buffer) > 0)
            responseString += new String(buffer);


This is obviously wrong. InputStream#read method does not necessarily fill up the whole buffer.

This is a better way of doing the same:
----------------
String responseString = null;
if (result != null) {
    StringBuilder buffer = new StringBuilder();
    InputStream inputStream = entity.getContent();
    try {
        String charset = EntityUtils.getContentCharSet(entity);
        Reader reader = new InputStreamReader(inputStream, charset);
        int l;
        char[] tmp = new char[1024];
        while ((l = reader.read(tmp)) != -1) {
            buffer.append(tmp, 0, l);
        }
        responseString = buffer.toString();
    } finally {
        inputStream.close();
    }
}
----------------

Oleg



        result.consumeContent();
    }

This performs successfully.
Then I'm getting some status info about form i've just submitted. I do it
like this:

    HttpGet httpGet = new HttpGet("http://[host
here]/res.php?key="+myKey+"&action=get&id="+id);
    HttpResponse response = httpClient.execute(httpGet);
    HttpEntity entity = response.getEntity();

execute() method throws ClientProtocolException. Using log4j i knew that web
server says about HTTP 404 error.
Wierd detail: DEBUG [org.apache.http.wire] >> "GET
/res.php?key=46a350bd56f9&action=get&id=89619587[0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0]
....
Endless nulls in the end of request that are not concerned with my id
variable.

One more detail: if i comment lines where i use FileBody class, all works
fine with no any exceptions and HTTP 404. So, the problem isn't web server
problem.

Am I working with multipart form wrong way?  Any help appreciated.
Thank you.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to