android之访问被保护的资源

转载 2013年12月02日 11:11:01
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>


相关文章推荐

Android开发 Http访问被保护的网络资源

没空写文字,直接上代码,以后有空再补文字!package com.jinbi.app.utils; import java.io.IOException; import java.io.Unsupp...

Android应用资源文件格式解析与保护对抗研究

原文地址:http://www.freebuf.com/articles/terminal/75944.html apktool是Android分析中会用到的一个重要的开源工具,但是apktoo...

Android资源访问

  • 2016年03月29日 21:47
  • 1.8MB
  • 下载

美团Android资源混淆保护实践

原文出处: 美团技术博客  前言 Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被破解或者汉化的应用,破解者可以非常简单的通过破解工具就能对一个APK进行反编译、破解、汉化...

线程实现的Android访问网络资源

  • 2015年12月10日 11:19
  • 3KB
  • 下载

美团Android资源混淆保护的具体实践

原文章[美团Android资源混淆保护实践]( http://tech.meituan.com/mt-android-resource-obfuscation.html),但是该文章并没有给出具体的...

Android资源混淆保护实践

Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被破解或者汉化的应用,破解者可以非常简单的通过破解工具就能对一个APK进行反编译、破解、汉化等等,这样就可以修改原有代码的逻辑、添加新代...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android之访问被保护的资源
举报原因:
原因补充:

(最多只允许输入30个字)