package cc.testhtmlcontent;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CredentialsProvider;
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.BasicCredentialsProvider;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.protocol.HTTP;
import android.os.Bundle;
import android.app.Activity;
/**
* Demo描述:
* 1 为HttpClient设置证书(CredentialsProvider 证书提供者)
* 2 然后获取HTML中的内容
*
*/
public class MainActivity extends Activity {
private final String USERNAME="your username";
private final String PASSWORD="your password";
private final String URL="your url";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getHTMLContent();
}

private void getHTMLContent() {
try {
new Thread(new Runnable() {
public void run() {
ArrayList<NameValuePair> nameValuePairArrayList = new ArrayList<NameValuePair>();
String HTMLContent = getHTMLContentByPost(nameValuePairArrayList, URL,false);
System.out.println("HTMLContent=" + HTMLContent);
}
}).start();
} catch (Exception e) {
}


}


public String getHTMLContentByPost(ArrayList<NameValuePair> nameValuePairArrayList,String url, boolean hasCredential) {
InputStream inputStream = null;
String line = "";
String htmlContentString = "";
HttpPost httpPost = new HttpPost(url);
DefaultHttpClient httpClient = new DefaultHttpClient();
//当需要证书的时候
//对HttpClient进行如下设置:
if (hasCredential) {
AuthScope authScope=new AuthScope(AuthScope.ANY_HOST,AuthScope.ANY_PORT);
UsernamePasswordCredentials usernamePasswordCredentials=new UsernamePasswordCredentials(USERNAME, PASSWORD);
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(authScope, usernamePasswordCredentials);
httpClient.setCredentialsProvider(credentialsProvider);
}

try {
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 8000);
HttpConnectionParams.setSoTimeout(httpClient.getParams(), 9000);
HttpConnectionParams.setTcpNoDelay(httpClient.getParams(), true);
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairArrayList, HTTP.UTF_8));
HttpResponse httpResponse = httpClient.execute(httpPost);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity httpEntity = httpResponse.getEntity();
inputStream = httpEntity.getContent();
InputStreamReader inputStreamReader=new InputStreamReader(inputStream, HTTP.UTF_8);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
while ((line = bufferedReader.readLine()) != null) {
htmlContentString += line;
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
clientShutdown(httpClient);
return htmlContentString;
}


//关闭client链接
public static void clientShutdown(HttpClient client) {
client.getConnectionManager().shutdown();
}


}

更多相关文章

  1. Android(安卓)之 ProgressDialog用法介绍
  2. android spinner 选中后显示字体的颜色设置
  3. 闹铃设置
  4. Android实现刮刮卡抽奖(上)
  5. android使用shape设置下边框
  6. android camera的基本使用
  7. android 设置linelayout让按钮自动适应屏大小
  8. Android(安卓)实现拍照功能
  9. Android(安卓)字体效果:描边、浮雕效果

随机推荐

  1. android calendar的使用
  2. Android(安卓)Retrofit下载文件
  3. Android全局捕获异常
  4. android TextView文字透明度和背景透明度
  5. 无需root,清除清理安卓,android的cache,缓
  6. # android 让文字像波浪一样闪烁动画
  7. android 按钮按下时改变字体颜色
  8. Viewpageindicator inside fragment
  9. 如何退出Android应用程序
  10. android 顶部的通知栏