您的位置:首页 > 理论基础 > 计算机网络

Android为HttpClient设置证书(用户名和密码)

2013-11-21 11:44 381 查看
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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: