Articles of httpclient

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

问题 我想将https请求发送到我自己的服务器站点https://10.2.20.20/fido/EzPay/login.php并从中获取响应并将其保存为例如字符串。 我在互联网上find了一些示例代码,并尝试测试它们以解决我的问题,但它们没有帮助。 下面我介绍一些我测试过的代码部分。 代码示例: 我试试这段代码,但我总是得到同样的例外“没有同行证书”为什么? 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挂起第二次请求到服务器(连接超时)

我正在努力解决以下问题:我的应用程序使用HttpClient向http服务器发出一系列请求。 我使用HttpPut将数据发送到服务器。 第一个请求进行得很快,第二个请求挂起40秒,然后我抓住Connection超时exception。 我正在尝试重用我的HttpClient并通过同一个实例发送第二个请求。 如果我与新的ConnectionManager一起创建新的HttpClient,那么一切正常。 为什么会这样? 以及如何修复它并且每次都不创建新的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 […]

除了WebView.getSettings()之外,有没有办法获取默认的用户代理字符串.getUserAgentString()?

我想在HttpClient连接中使用手机的默认用户代理,并想知道是否有办法获取用户代理而无需使用WebView进行查询。

4G / LTE上的Android HttpClient OOM(HTC Thunderbolt)

当我尝试在Verizon的4G / LTE上使用我的应用程序时,我收到了一些崩溃用户的报告。 查看堆栈跟踪,看起来Android的HttpClient.execute()实现正在抛出一个OOM。 这仅发生在4G / LTE设备上,特别是HTC Thunderbolt,并且仅在4G / LTE上。 WiFi,3G,UMTS都可以。 也适用于Sprint的WiMax 4G工作正常。 两个问题: 什么是引起Android开发者关注的最佳方式? 除了报告http://code.google.com/p/android/issues之外,还有哪些更好的选择? 关于如何解决这个问题的任何想法? 我自己没有4G设备,我无法在模拟器中实现这一点,所以我需要在这里做一些有根据的猜测。 我可以尝试在我的代码中捕获OOM并尝试清理并强制GC,但我不确定这是不是一个好主意。 评论或其他建议? 这是我的代码所做的: HttpParams params = this.getHttpParams(); // returns params ClientConnectionManager cm = new ThreadSafeClientConnManager(params, this.getHttpSchemeRegistry() ); DefaultHttpClient httpClient = new DefaultHttpClient( cm, params ); HttpResponse response = null; request = new HttpGet( url ); try { […]

Android JSON HttpClient使用HttpResponse将数据发送到PHP服务器

我目前正在尝试将一些来自Android应用程序的数据发送到php服务器(两者都由我控制)。 在应用程序中的表单上收集了大量数据,这些数据被写入数据库。 这一切都有效。 在我的主代码中,首先我创建了一个JSONObject(我在这里为此示例删除了它): JSONObject j = new JSONObject(); j.put(“engineer”, “me”); j.put(“date”, “today”); j.put(“fuel”, “full”); j.put(“car”, “mine”); j.put(“distance”, “miles”); 接下来,我将对象传递给发送,并收到响应: String url = “http://www.server.com/thisfile.php”; HttpResponse re = HTTPPoster.doPost(url, j); String temp = EntityUtils.toString(re.getEntity()); if (temp.compareTo(“SUCCESS”)==0) { Toast.makeText(this, “Sending complete!”, Toast.LENGTH_LONG).show(); } HTTPPoster类: public static HttpResponse doPost(String url, JSONObject c) throws ClientProtocolException, IOException { HttpClient httpclient […]

使用HttpClient时在活动中使用Cookie

我正在尝试一个简单的应用程序来阅读网站的HTML,并转换它以在Android中创建一个易于阅读的UI(这是一个学习android的exersize,而不是一个可用的应用程序)。 我遇到的问题是跨活动持久存在用户会话,然后在调用后在HttpClient使用会话。 我想“正确地”这样做,推荐的方法似乎是使用CookieManager 。 但是我遇到了这个问题 – 我似乎无法find从CookieManager获取Cookie的“正确”方法,并在以后的单独活动中将HttpClient实例化。 当使用CookieManager我可以保存Cookie ,然后Cookie就在其他活动的范围内(参见代码片段2)。 我在请求页面时没有find如何使用它(请参阅代码片段3)。 够了,这里有一些代码。 首先我的登录操作和Cookie存储: private OnClickListener loginActionListener = new OnClickListener() { public void onClick(View v) { EditText usernameTextView = (EditText) findViewById(R.id.Username); EditText passwordTextView = (EditText) findViewById(R.id.Password); String username = usernameTextView.getText().toString(); String password = passwordTextView.getText().toString(); try { HttpPost postMethod = new HttpPost(URI); HttpParams params = new BasicHttpParams(); params.setParameter(“mode”, […]

我需要Android中的HttpClient替代选项,以便将数据发送到PHP,因为它不再受支持

目前我正在使用HttpClient , HttpPost从Android app向我的PHP server发送数据,但所有这些方法在API 22中已弃用并在API 23中删除,那么它的替代选项有哪些? 我到处搜索,但我没有find任何东西。

Android 1.6捆绑了哪个版本的Apache HTTP Client?

我希望有一个单独的项目,在普通的JVM中运行我的服务器通信代码,以进行集成测试。 此代码使用构建到Android Framework中的这些库… http://developer.android.com/reference/org/apache/http/client/package-summary.html 有谁知道这应该是什么版本的Apache HTTP Client? 我想在没有Android测试的情况下运行它,这些测试非常缓慢。

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: […]

Content-Length标头已存在

我正在使用Android中包含的Apache HttpClient(4.1)来执行HttpPut。 我已经确认我只有1个内容长度标题。 但是,每次发送请求时,都会收到有关已指定的Content-Length标头的协议exception。 HttpClient client = new DefaultHttpClient(); putMethod = new HttpPut(url + encodedFileName); putMethod.addHeader(..) //<-once for each header putMethod.setEntity(new ByteArrayEntity(data)); client.execute(putMethod); //throws Exception 引起:org.apache.http.ProtocolException:org.apache.http.protocol.RequestContent.process(RequestContent.java:70)中已经出现的Content-Length头文件位于org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor的.java:290) 有任何想法吗?