Tag: httpclient

如何在HttpClient的请求中添加,设置和获取Header?

在我的应用程序中,我需要在请求中设置标题,我需要在控制台中打印标题值…所以请举例说明HttpClient或在我的代码中编辑它… 我的代码是, import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; public class SimpleHttpPut { public static void main(String[] args) { HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(“http://http://localhost:8089/CustomerChatSwing/JoinAction”); try { List nameValuePairs = new ArrayList(1); nameValuePairs.add(new BasicNameValuePair(“userId”, […]

httpclientexception“org.apache.http.conn.ConnectionPoolTimeoutException:超时等待连接”

我正在尝试使用以下代码向我的服务器发送请求。 总是在第3次请求时失败了。 import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.HttpVersion; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONTokener; public class HttpClientTest { private HttpClient client; public HttpClientTest() { HttpParams params = […]

如何在Java中以编程方式检查SSL证书到期日期

我需要从Java网站上的SSL证书中提取到期日期,应该支持可信和自签名证书,例如:1.trusted https://github.com 2.self-signed https://mms.nw .RU / 我已经将一些代码复制为: import java.net.URL; import java.security.SecureRandom; import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.KeyManager; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class SSLTest { public static void main(String [] args) throws Exception { // configure the SSLContext with a TrustManager SSLContext ctx = SSLContext.getInstance(“TLS”); […]

HttpClient – Cookies – 和JEditorPane

我已成功设法使用httpclient登录到站点并打印出启用该登录的cookie。 但是,我现在卡住了,因为我想使用.setPage(url)函数在JEditorPane中显示后续页面。 但是,当我这样做并使用Wireshark分析我的GET请求时,我发现用户代理不是我的httpclient,而是以下内容: 用户代理:Java / 1.6.0_17 GET请求(在jeditorpane的setPage(URL url)方法中的某处编码)没有使用httpclient检索的cookie。 我的问题是 – 我怎么能以某种方式转移使用httpclient收到的cookie,以便我的JEditorPane可以显示来自网站的URL? 我开始认为这是不可能的,我应该尝试使用普通的Java URL连接等登录,但宁愿坚持使用httpclient,因为它更灵活(我认为)。 据推测,我仍然会遇到cookies问题? 我曾想过扩展JEditorPane类并重写setPage()但我不知道我应该放入的实际代码,因为似乎无法找出setPage()实际上是如何工作的。 任何帮助/建议将不胜感激。 戴夫

使用HttpProxy通过preemtive身份validation连接到主机

我正在使用HttpClient连接到需要BasicAUTH的主机。 但代理不需要任何身份validation。 我把它设置如下: private final HttpClient httpClient; // Spring injected 设置基本身份validation: private void setBasicAuth(final String username, final String password) { httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM), new UsernamePasswordCredentials(username, password)); httpClient.getParams().setAuthenticationPreemptive(true); } 设置代理: private void setProxy(final String proxyHost, final int proxyPort) { hostConfiguration hostConfiguration = httpClient.getHostConfiguration(); hostConfiguration.setProxy(proxyHost, proxyPort); } 但是在运行代码时我收到以下警告。 一切正常,但我也想摆脱警告(或至少理解它们出现的原因) WARN oachttpclient.HttpMethodDirector – Required proxy credentials not […]

HttpClient NoClassDefFoundError

我正在尝试从HttpClient 4.0.1运行示例应用程序。 它是示例部分中的ClientMultiThreadedExecution.java文件。 我把这些文件放在类路径中: apache-mime4j-0.6.jar ; commons-codec-1.3.jar ; commons-logging-1.1.1.jar ; httpclient-4.0.1.jar ; httpcore-4.0.1.jar ; httpmime-4.0.1.jar和文件正确编译。 在运行时,我收到以下错误: Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 我错过了参考吗? 这似乎是一个类路径错误,但我无法弄清楚要包含哪个jar文件? 预先感谢您的帮助。

Apache DefaultHttpClient调用导致“java.lang.RuntimeException:Stub!”

我正在将我的脚趾浸入Android开发中。 我有一个项目将与RESTful资源接口,我正在试图找出如何通过HTTP上的params进行基本GET。 从我读过的所有内容来看,共识似乎都支持HTTPClient优于HttpURLConnection。 我编写了一个包装类,其中包含一个方法,该方法负责实例化密钥对象以使用HTTPClient发出请求: public String get() { String responseString = null; HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(); try { get.setURI(new URI(this.baseURL())); } catch (URISyntaxException e1) { e1.printStackTrace(); } HttpResponse response; try { response = client.execute(get); responseString = readResponse(response.getEntity()); if(response != null) { System.out.println(responseString); } } catch(ClientProtocolException e) { e.printStackTrace(); } […]

如何在multithreading操作中使用HttpClient?

我要做一个在某个主机上执行Login POST请求的应用程序,然后导航一些页面,查找并检索一些数据。 因为网站资源受到会话的保护,所以我必须首先登录网站才能进行一些操作,比如获取或发布一些数据。 我的问题是因为HttpClient不是线程安全的,我怎么能只创建一个HttpClient实例,但是线程可以安全地执行它? 请记住,底层连接必须首先登录才能用于操作。

java.lang.NoSuchMethodError:org.apache.http.protocol.BasicHttpContext:方法()V未找到

嗨,我想尝试建立一个小的webapp,但我遇到了错误。 以下是我的代码 HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(“SomeURL”); // Using a URL local to my machine // after setting nameValuePair and setting it on httppost httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); // This is where I am getting the above mentioned exception HttpResponse response = httpclient.execute(httppost); 我使用的是httpclient-4.0-beta2.jar和httpcore-4.0.1.jar。 看起来BasicHttpContext与我的应用程序中的其他一些jar子发生了冲突,但我无法弄明白。 任何线索将不胜感激。

如何强制Java的HttpClient接受无效的cookie?

我正在编写一个登录到WordPress的脚本,但是,HttpClient的cookie策略将WordPress设置的cookie识别为无效: May 17, 2009 12:07:43 PM org.apache.commons.httpclient.HttpMethodBase processCookieHeaders WARNING: Cookie rejected: “$Version=0; wordpress_dce2080bc042b2e639e4f5b3b704aa43=admin%7C1243786064%7C4c56aef46b1210d3d43d8b829fdf4d9a; $Path=/wp-content/plugins”. Illegal path attribute “/wp-content/plugins”. Path of origin: “/wp-login.php” May 17, 2009 12:07:43 PM org.apache.commons.httpclient.HttpMethodBase processCookieHeaders WARNING: Cookie rejected: “$Version=0; wordpress_dce2080bc042b2e639e4f5b3b704aa43=admin%7C1243786064%7C4c56aef46b1210d3d43d8b829fdf4d9a; $Path=/wp-admin”. Illegal path attribute “/wp-admin”. Path of origin: “/wp-login.php” 如果没有cookie支持,脚本无法登录。 我怎么能绕过这个? (使用HttpClient 3.1)