Apache HttpClient 4.0。奇怪的行为

时间:2009-11-04 19:24:03

标签: java httpclient

我正在使用Apache HttpClient 4.0作为我的网络抓取工具。我发现奇怪的行为是:我正在尝试通过HTTP GET方法获取页面并获得有关404 HTTP错误的响应。但是,如果我尝试使用浏览器获取该页面,那么它已成功完成。

详细说明: 1.我以这种方式将多部分表单上传到服务器:

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

        result.consumeContent();
    }

Uppload成功结束。

  1. 我从网络服务器获得了一些结果:

        HttpGet httpGet = new HttpGet("http://[host here]/res.php?key="+myKey+"&action=get&id="+id);
    
        HttpResponse response = httpClient.execute(httpGet);
        HttpEntity entity = response.getEntity();
    
  2. 我在执行方法运行时收到ClientProtocolException。我用log4j调试了这种情况。服务器回答“404 Not Found”。但是我的浏览器没有问题地加载了我的页面。

    任何人都可以帮助我吗?

    谢谢。

1 个答案:

答案 0 :(得分:0)

我必须注意问题与Web服务器无关。如果我不将FileBody添加到多部分表单数据中,则不会发生异常,一切都没有HTTP 404。