我使用netbeans作为IDE来为您提供背景信息。
我正在使用Apache httpclient库,就像我当前的应用程序一样,我遇到了内置的java HTTP连接问题。
我听说apache库更强大。
无论如何,apache网站上的httpclient库附带的教程文档似乎存在缺陷:
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://localhost/");
HttpResponse response = httpclient.execute(httpget);
Net beans为我提供了此代码段的问题(直接从教程中复制)。忘掉localhost的基本URI,出现的问题是:
netbeans抱怨HttpClient和DefaultHttpClient是不兼容的类型。我能看到的唯一方法就是施放:
(HttpClient) new DefaultHttpClient();
httpclient.execute()
会抛出错误,因为这里的“httpget”只是一种方法而不是“HttpUriRequest”。如果一个简单的3行教程如此错误,如果这个例子中存在很多缺陷,我将如何成功完成一个请求呢?
我迷路了,有人可以帮帮忙。似乎有几种不同的方式,都不完全是我正在寻找的。 p>
我希望能够在String中的应用程序中获取格式良好的URL,然后跟随所有重定向。我对响应的内容一点也不感兴趣,只是它会丢弃的cookie。
谢谢,
格雷戈里
答案 0 :(得分:1)
我建议看看你的进口商品。我认为NetBeans导入了你的HttpClient 3.x而不是4.x.尝试更正您的导入。
答案 1 :(得分:0)
您是否尝试过使用此代码,它们似乎使用的机制与您不同。取自here。这适用于3.X版本,因此可能是您使用的是其他版本。
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;
import java.io.*;
public class HttpClientTutorial {
private static String url = "http://www.apache.org/";
public static void main(String[] args) {
// Create an instance of HttpClient.
HttpClient client = new HttpClient();
// Create a method instance.
GetMethod method = new GetMethod(url);
// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
try {
// Execute the method.
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}
// Read the response body.
byte[] responseBody = method.getResponseBody();
// Deal with the response.
// Use caution: ensure correct character encoding and is not binary data
System.out.println(new String(responseBody));
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
// Release the connection.
method.releaseConnection();
}
}
}
答案 2 :(得分:0)
当我使用它时(在Android上)我实现了一个CustomHttpClient,遵循示例here