Articles of httpclient

android httpclient挂起对服务器的第二个请求(连接超时)

我正在努力解决以下问题:我的应用程序使用HttpClient向http服务器发出一系列请求。 我使用HttpPut将数据发送到服务器。 第一个请求顺利,快速,第二个请求挂起40秒,然后我赶上连接超时exception。 我试图重用我的HttpClient并通过同一个实例发送第二个请求。 如果我与新的ConnectionManager一起创build新的HttpClient,那么一切正常。 为什么发生这种情况? 以及如何解决这个问题,而不是每次创build新的HttpClient? 提前致谢。 这里是我的代码:(如果我在doPut中注释readClient = newHttpClient(readClient),那么问题就出现了。 public class WebTest { private HttpClient readClient; private SchemeRegistry httpreg; private HttpParams params; private URI url; //http://my_site.net/data/ protected HttpClient newHttpClient(HttpClient oldClient) { if(oldClient != null) oldClient.getConnectionManager().shutdown(); ClientConnectionManager cm = new SingleClientConnManager(params, httpreg); return new DefaultHttpClient(cm, params); } protected String doPut(String data) { //**************************** //Every […]

https(无对等证书)在android中的问题

问题 我想发送https请求到站点https://10.2.20.20/fido/EzPay/login.php我自己的服务器,并得到它的响应,并保存在一个string。 我在网上find了一些示例代码,并尝试testing他们的问题,但他们没有帮助。 下面我介绍一些我testing过的代码部分。 代码示例: 我尝试这个代码,但我总是得到同样的exception“没有同行证书”为什么? try { HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER; DefaultHttpClient client = new DefaultHttpClient(); SchemeRegistry registry = new SchemeRegistry(); SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory(); socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier); registry.register(new Scheme("https", socketFactory, 443)); SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry); DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams()); // Set verifier HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier); // Example send http request final String […]

Android HttpClient – 证书中的主机名不符合<example.com>!= <*。example.com>

我在Android上使用HttpClient连接到https://someUrl.com/somePath 。 问题是该网站的证书是* .someUrl.com,而不是someUrl.com,所以我得到一个SSLException。 是的,但是,除非我能把它修好,否则我会被卡住。 有没有办法让我的HttpClient放松并接受证书?

检测并处理需要login的WiFi

我在一个Android应用程序中使用HttpClient 4.1,并试图让我的应用程序的API请求截获其中一个“你需要login或支付WiFi”屏幕的智能。 我想popup一个webview允许用户login。 我一直在尝试拦截httpClient中的redirect,但我没有成功。 这是我目前正在尝试: this.client = new DefaultHttpClient(connectionManager, params); ((DefaultHttpClient) this.client).setRedirectStrategy(new DefaultRedirectStrategy() { public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) { boolean isRedirect = Boolean.FALSE; try { isRedirect = super.isRedirected(request, response, context); } catch (ProtocolException e) { Log.e(TAG, "Failed to run isRedirected", e); } if (!isRedirect) { int responseCode = response.getStatusLine().getStatusCode(); if (responseCode […]

URLConnection或HTTPClient:提供更好的function和更高的效率?

我期待为Android应用程序创build一个login表单。 我想用post方法将信息发送到PHP文件处理的服务器端; 进而validation参数并发送回应。 我已经通过使用HttpClient和URLConnection的实现来看,他们是非常相似的。哪一个更高效的使用android应用程序内? 感谢Fabii

Android的UnknownHostException:有没有办法设置超时?

当我连接到我的web服务来检索数据时,手机有时会断开连接,DNS搞砸了,等等。然后我得到一个UnknownHostException ,这是非常好的。 我想要做的是在这里查找hostName时设置一个超时: response = httpclient.execute(httpget); 我已经设定: HttpConnectionParams.setConnectionTimeout(httpParameters,timeoutConnection); HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); 但他们似乎不适用于HostLookUp 。 有什么方法来设置主机查找超时? 编辑 我刚刚发现用户不能在hc-dev邮件列表的这篇文章中修改nslookup的超时时间。 我将不得不在这个时候从一个定时器手动抛出一个超时exception。

在Android中使用HttpClient和HttpPost和post参数

我正在为Android应用程序编写代码,这个应用程序需要将数据打包为Json,并将其发布到一个Web服务器,而这个Web服务器反过来也是用json来响应的。 使用GET请求工作正常,但由于某种原因使用POST所有数据似乎被剥夺,服务器不会收到任何东西。 以下是代码片段: HttpParams params = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(params, 5000); HttpConnectionParams.setSoTimeout(params, 5000); DefaultHttpClient httpClient = new DefaultHttpClient(params); BasicCookieStore cookieStore = new BasicCookieStore(); httpClient.setCookieStore(cookieStore); String uri = JSON_ADDRESS; String result = ""; String username = "user"; String apikey = "something"; String contentType = "application/json"; JSONObject jsonObj = new JSONObject(); try { jsonObj.put("username", username); jsonObj.put("apikey", apikey); } […]

Android HttpClient和HTTPS

我是在Android中实现HTTPS连接的新手。 基本上,我试图连接到使用org.apache.http.client.HttpClient的服务器。 我相信,在某种程度上,我需要访问应用程序的密钥库,以便用私钥授权我的客户端。 但是,目前,我只是想连接,看看会发生什么; 我不断收到HTTP / 1.1 400错误的请求错误。 尽pipe有很多例子,但我似乎无法做出正面或反面的结论(这些例子似乎都不适合我)。 我的代码看起来像这样(BODY常量是XmlRPC): private void connect() throws IOException, URISyntaxException{ HttpPost post = new HttpPost(new URI(PROD_URL)); HttpClient client = new DefaultHttpClient(); post.setEntity(new StringEntity(BODY)); HttpResponse result = client.execute(post); Log.d("MainActivity", result.getStatusLine().toString()); } 所以,很简单。 让我知道有没有人有任何build议。 谢谢!

Android SSL HttpGet(无对等证书)错误或(连接被对等closures)错误

我正在尝试做一个简单的HttpGet来读取一个网页。 我有这个在iOS上工作,并通过HTTP在Android上工作,但不是https。 该url是一个内部networkingIP和自定义端口,所以我可以用这样的http://ipaddress:port/MyPage.html使用http://ipaddress:port/MyPage.html HttpClient httpclient = new DefaultHttpClient(httpParameters); HttpResponse response; String responseString = null; try { // Try connection HttpGet get = new HttpGet(params[0].path); get.addHeader("Authorization", "Basic " + Base64.encodeBytes(new String(params[0].username + ":" + params[0].password) .getBytes())); response = httpclient.execute(get); StatusLine statusLine = response.getStatusLine(); if (statusLine.getStatusCode() == HttpStatus.SC_OK) { ByteArrayOutputStream out = new ByteArrayOutputStream(); response.getEntity().writeTo(out); out.close(); responseString […]

DefaultHttpClient到AndroidHttpClient

我的代码有问题,希望得到一些帮助。 我第一次使用这个代码: new DefaultHttpClient().execute(new HttpGet(linkk)).getEntity().writeTo( new FileOutputStream(f)); 它在android 2.3上工作得很好,但在4.0上却不行。 经过一番研究,我听说最好使用AndroidHttpClient,这样它就可以在4.0和3.1上运行。 问题是,我不知道我是否正确修改了我的代码,并没有太多有关AndroidhttpClient在互联网上的例子。 这是我调整的代码: AndroidHttpClient client = AndroidHttpClient.newInstance("Android"); HttpGet request = new HttpGet(linkk); HttpResponse response = client.execute(request); //here is where the exception is thrown response.getEntity().writeTo(new FileOutputStream(f)); 这是logcat显示的内容: 01-03 01:32:11.950: W/dalvikvm(17991): threadid=1: thread exiting with uncaught exception (group=0x40a2e1f8) 01-03 01:32:11.986: E/AndroidRuntime(17991): FATAL EXCEPTION: main 01-03 01:32:11.986: E/AndroidRuntime(17991): java.lang.RuntimeException: […]