package testcase.T_https_HostnameVerifier_02; import java.security.KeyStore; import javax.net.ssl.SSLException; import org.apache.http.HttpException; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.ssl.AllowAllHostnameVerifier; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity_Scheme extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread() { public void run() { https(); } }.start(); } private void https() { DefaultHttpClient client = new DefaultHttpClient(); try { KeyStore ks = KeyStoreUtil.getEmptyKeyStore(); // 验证私有密钥 KeyStoreUtil.loadX509Certificate(ks, getBaseContext().getResources().getAssets().open("cacert.crt")); SSLSocketFactory sf = new SSLSocketFactory(ks); sf.setHostnameVerifier(new AllowAllHostnameVerifier()); // 允许所有主机的验证 Scheme sch = new Scheme("https", sf, 443); client.getConnectionManager().getSchemeRegistry().register(sch); String urlString = "https://mail.qq.com/cgi-bin/loginpage"; HttpGet request = new HttpGet(urlString); Log.e("testcaseLog_urlString", urlString); HttpResponse response = client.execute(request); checkResponse(response); String result_json = EntityUtils.toString(response.getEntity(), "UTF-8"); Log.e("testcaseLog_result", result_json); } catch (SSLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { client.getConnectionManager().shutdown(); } } private void checkResponse(HttpResponse response) throws HttpException { int statusCode = response.getStatusLine().getStatusCode(); Log.e("testcaseLog_statusCode", "" + statusCode); if (HttpStatus.SC_OK != statusCode) { Log.e("testcaseLog_statusCode", "" + statusCode); throw new HttpException("testcaseLog_statusCode: " + statusCode); } } }