关闭

android之访问被保护的资源

标签: android网络编程访问被保护的资源HttpClient
839人阅读 评论(0) 收藏 举报
分类:
package org.crazyit.net;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


public class HttpClientTest extends Activity
{
	TextView response;
	HttpClient httpClient;
	Handler handler = new Handler()
	{
		public void handleMessage(Message msg)
		{
			if(msg.what == 0x123)
			{
				// 使用response文本框显示服务器响应
				response.append(msg.obj.toString() + "\n");
			}
		}
	};
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 创建DefaultHttpClient对象
		httpClient = new DefaultHttpClient();
		response = (TextView) findViewById(R.id.response);
	}
	public void accessSecret(View v)
	{
		response.setText("");
		new Thread()
		{
			@Override
			public void run()
			{
				// 创建一个HttpGet对象
				HttpGet get = new HttpGet(
					"https://mail.qq.com/cgi-bin/loginpage");  //①
				try
				{
					// 发送GET请求
					HttpResponse httpResponse = httpClient.execute(get);//②
					HttpEntity entity = httpResponse.getEntity();
					if (entity != null)
					{
						// 读取服务器响应
						BufferedReader br = new BufferedReader(
							new InputStreamReader(entity.getContent()));
						String line = null;
						
						while ((line = br.readLine()) != null)
						{
							Message msg = new Message();
							msg.what = 0x123;
							msg.obj = line;
							handler.sendMessage(msg);
						}
					}
				}
				catch (Exception e)
				{
					e.printStackTrace();
				}
			}
		}.start();
	}
	public void showLogin(View v)
	{
		// 加载登录界面
		final View loginDialog = getLayoutInflater().inflate(
			R.layout.login, null);
		// 使用对话框供用户登录系统
		new AlertDialog.Builder(HttpClientTest.this)
			.setTitle("登录系统")
			.setView(loginDialog)
			.setPositiveButton("登录",
			new DialogInterface.OnClickListener()
			{
				@Override
				public void onClick(DialogInterface dialog,
					int which)
				{
					// 获取用户输入的用户名、密码
					final String name = ((EditText) loginDialog
						.findViewById(R.id.name)).getText()
						.toString();
					final String pass = ((EditText) loginDialog
						.findViewById(R.id.pass)).getText()
						.toString();
					new Thread()
					{
						@Override
						public void run()
						{
							try
							{
								HttpPost post = new HttpPost("https://mail.qq.com/cgi-bin/loginpage");//③
								// 如果传递参数个数比较多的话可以对传递的参数进行封装
								List<NameValuePair> params = new
									ArrayList<NameValuePair>();
								params.add(new BasicNameValuePair
									("name", name));
								params.add(new BasicNameValuePair
									("pass", pass));								
								// 设置请求参数
								post.setEntity(new UrlEncodedFormEntity(
									params, HTTP.UTF_8));
								// 发送POST请求
								HttpResponse response = httpClient
									.execute(post);  //④
								// 如果服务器成功地返回响应
								if (response.getStatusLine()
									.getStatusCode() == 200)
								{
									String msg = EntityUtils
										.toString(response.getEntity());
									Looper.prepare();
									// 提示登录成功
									Toast.makeText(HttpClientTest.this,
										msg, Toast.LENGTH_SHORT).show();
									Looper.loop();
								}
							}
							catch (Exception e)
							{
								e.printStackTrace();
							}
						}
					}.start();
				}
			}).setNegativeButton("取消", null).show();
	}
}



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<LinearLayout
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:gravity="center_horizontal"
	>	
<Button  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:text="@string/get"
	android:onClick="accessSecret"
	/>
<Button  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:text="@string/login"
	android:onClick="showLogin"
	/>
</LinearLayout>
<TextView  
	android:id="@+id/response"
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent"
	android:gravity="top" 
	android:background="#ffff"
	android:textColor="#f000"
	android:textSize="16dp"
	/>
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<LinearLayout
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	>
<TextView  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content"
	android:text="@string/name"
	/>
<EditText  
	android:id="@+id/name"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	/>
</LinearLayout>
<LinearLayout
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	>
<TextView  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content"
	android:text="@string/pass"
	/>
<EditText  
	android:id="@+id/pass"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	/>
</LinearLayout>
</LinearLayout>


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1150121次
    • 积分:8685
    • 等级:
    • 排名:第2279名
    • 原创:115篇
    • 转载:72篇
    • 译文:0篇
    • 评论:324条
    博客专栏
    联系方式
    最新评论