Tag: apache httpclient 4.x

HttpClient获取状态码

使用Apache HttpClient 4.1.3并尝试从HttpGet获取状态码: HttpClient client = new DefaultHttpClient(); HttpGet response = new HttpGet("http://www.example.com"); ResponseHandler<String> handler = new BasicResponseHandler(); String body = client.execute(response, handler); 如何从body提取状态码(202,404等)? 或者,如果在4.1.3中有另外一种方法,那是什么? 此外,我假设一个完美的/好的HTTP响应是一个HttpStatus.SC_ACCEPTED但也希望确认。 提前致谢!

无效的BasicClientConnManager使用:连接仍然分配

我正在调用REST URL并尝试测量获取响应的时间。 我使用DefaultHttpClient来从REST URL获取响应。 在我的下面的程序中,每个线程将在一个特定的范围内工作。 像每个线程将在1 – 100之间工作,第二个线程将在101 – 200之间工作等 所以在我的下面的代码,第一次工作正常。 但是第二次,它是第二次在这一行httpclient.execute抛出exception, java.lang.IllegalStateException: Invalid use of BasicClientConnManager: connection still allocated. Make sure to release the connection before allocating another one. 我在这里有什么错吗? 以下是我的代码 – class Task implements Runnable { private DefaultHttpClient httpclient = new DefaultHttpClient(); private HttpGet httpGet; private HttpResponse response; @Override public void run() { […]

Apache HttpClient API中的CloseableHttpClient和HttpClient有什么不同?

我正在学习我们公司开发的应用程序。 它使用Apache HttpClient库。 在源代码中,它使用HttpClient类来创build实例以连接到服务器。 我想了解一下Apache HttpClient,我已经走过这一套例子 。 所有的例子都使用CloseableHttpClient而不是HttpClient 。 所以我认为CloseableHttpClient是HttpClient的扩展版本。 如果是这种情况,我有两个问题: 这两者有什么区别? 我的新开发推荐使用哪个类?

如何设置与Apache HTTP客户端库4.1自定义用户代理?

如何使HTTPClient使用自定义User-Agent头? 以下代码提交空的用户代理。 我错过了什么? import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.CoreProtocolPNames; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils; public class TestHTTP { public static void main(String[] args) throws ClientProtocolException, IOException { HttpGet request = new HttpGet("http://tool.keepmeapi.com/echo"); HttpContext HTTP_CONTEXT = new BasicHttpContext(); HTTP_CONTEXT.setAttribute(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; […]

Apache HttpClient超时

有没有一种方法来指定整个HttpClient执行超时? 我已经尝试了以下内容: httpClient.getParams().setParameter("http.socket.timeout", timeout * 1000); httpClient.getParams().setParameter("http.connection.timeout", timeout * 1000); httpClient.getParams().setParameter("http.connection-manager.timeout", new Long(timeout * 1000)); httpClient.getParams().setParameter("http.protocol.head-body-timeout", timeout * 1000); 它实际上工作正常,除非远程主机发回数据 – 即使在一个字节/秒 – 它将继续永远阅读! 但是我想在最多10秒内中断连接,不pipe主机是否响应。

Apache HttpClient(4.1及更高版本):如何做基本身份validation?

如何为httpClient库的默认客户端添加基本身份validation? 我已经看到他们使用client.getCredentialProvider()例子,但是我认为所有这些方法都是针对库版本4.0.1或3.x的。 有没有一个新的例子如何做到这一点? 非常感谢。

如何正确地从Android上使用Gradle构build文件从org.apache导入HttpClient?

我看到这个错误,当我尝试运行“gradle build” WARNING: Dependency org.apache.httpcomponents:httpclient:4.2.3 is ignored for the default configuration as it may be conflicting with the internal version provided by Android. In case of problem, please repackage with jarjar to change the class packages :prepareFreeDebugDependencies :compileFreeDebugAidl UP-TO-DATE :generateFreeDebugBuildConfig UP-TO-DATE :mergeFreeDebugAssets UP-TO-DATE :compileFreeDebugRenderscript UP-TO-DATE :mergeFreeDebugResources UP-TO-DATE :processFreeDebugManifest UP-TO-DATE :processFreeDebugResources UP-TO-DATE :compileFreeDebug /home/xrdawson/Projects/Foo/Bar/src/main/java/com/Foo/app/PixActivity.java:20: error: package […]

commons httpclient – 将查询string参数添加到GET / POST请求

我正在使用commons HttpClient对Spring servlet进行http调用。 我需要在查询string中添加一些参数。 所以我做了以下几点: HttpRequestBase request = new HttpGet(url); HttpParams params = new BasicHttpParams(); params.setParameter("key1", "value1"); params.setParameter("key2", "value2"); params.setParameter("key3", "value3"); request.setParams(params); HttpClient httpClient = new DefaultHttpClient(); httpClient.execute(request); 但是当我尝试读取servlet中的参数使用 ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest().getParameter("key"); 它返回null。 实际上parameterMap是完全空的。 在创buildHttpGet请求之前手动将参数附加到url时,参数在servlet中可用。 同样,当我从浏览器使用带有queryString的URL来追加servlet。 这里有什么错误? 在httpclient 3.x中,GetMethod有一个setQueryString()方法来追加查询string。 4.x中的等价物是什么?

Jersey-client和Apache HTTP Client如何比较?

首先,我不是想在这里开始一场火焰战争。 我知道泽西足够好,但很less使用httpclient。 jersey-client和Apache的httpclient有什么不同之处? 在哪个领域比另一个更好? 有没有比较好的图表? 哪一个更好的文件(比如2048 MB)? 非常感谢您的意见!

用HttpClient写入正文请求

我想用XML内容types写一个请求的主体,但我不知道如何与HttpClient对象( http://hc.apache.org/httpclient-3.x/apidocs/index.html ) DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpRequest = new HttpPost(this.url); httpRequest.setHeader("Content-Type", "application/xml"); 而我不知道如何继续用我的XML写身体…