概述
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();
}
}
最后
以上就是如意水池为你收集整理的Android为HttpClient设置证书(用户名和密码)的全部内容,希望文章能够帮你解决Android为HttpClient设置证书(用户名和密码)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复