Android爲HttpClient設置證書(用戶名和密碼)
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();
}
}
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();
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.