我正在使用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成功结束。
我从网络服务器获得了一些结果:
HttpGet httpGet = new HttpGet("http://[host here]/res.php?key="+myKey+"&action=get&id="+id);
HttpResponse response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
我在执行方法运行时收到ClientProtocolException。我用log4j调试了这种情况。服务器回答“404 Not Found”。但是我的浏览器没有问题地加载了我的页面。
任何人都可以帮助我吗?
谢谢。
答案 0 :(得分:0)
我必须注意问题与Web服务器无关。如果我不将FileBody添加到多部分表单数据中,则不会发生异常,一切都没有HTTP 404。