Android:从httpsurl获取响应

问候,

我正在开发一个Android应用程序,需要通过https打开一个URL(带有POST参数)并获得响应。

还有一个增加的复杂性,我有一个自签名证书。 我也需要接受cookie。

任何人有什么想法从哪里开始?

提前谢谢了,

Solutions Collecting From Web of "Android:从httpsurl获取响应"

Android自带的apache commons http库包含在内。 设置https发布请求非常简单:

HttpPost post = new HttpPost("https://yourdomain.com/yourskript.xyz"); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("postValue1", "my Value")); nameValuePairs.add(new BasicNameValuePair("postValue2", "2nd Value")); post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpClient client = new DefaultHttpClient(); HttpResponse response = client.execute(post); HttpEntity entity = response.getEntity(); String responseText = EntityUtils.toString(entity); 

Android使用公共http库的4.x版本,因为所有低于4.0的版本都不在其生命周期中。

我无法确切知道如何向HttpClient注册自签名证书,但是mybe commons http文档有助于:

http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d4e506

我设法让所有的cookie和unsigned https都asynchronous工作。

我在这里使用的代码:

http://masl.cis.gvsu.edu/2010/04/05/android-code-sample-asynchronous-http-connections/

并使用Brian Yarger的代码在这里修改为未签名的https:

Android上的自签名SSL接受

(将上面的代码添加到HttpConnection.java中run()的开头)

为了让cookies正常工作,我不得不修改一些代码(来自HttpConnection.java的POST代码片段):

  case POST: HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new StringEntity(data)); httpPost.addHeader("Cookie", Cookie.getCookie()); response = httpClient.execute(httpPost); Header[] headers=response.getAllHeaders(); for(int i=0;i<headers.length;i++){ if(headers[i].getName().equalsIgnoreCase("Set-Cookie")){ //Log.i("i",headers[i].getName()+"---"+headers[i].getValue()); Cookie.setCookie(headers[i].getValue()); break; } } break; 

非常感谢大家指点我的方向,