关闭

android之访问被保护的资源

标签: android网络编程访问被保护的资源HttpClient
904人阅读 评论(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
查看评论

android如何将资源打入jar并对资源进行保护

引言 有很多项目需要将Android工程打包成SDK,将java代码编译后打成一个jar包提供给二次开发商,但是,因为android工程会含有资源文件,那资源文件怎么提供给对方?怎么直接打到jar中?怎么保证资源的完全性? 走过的弯路 将资源直接提供给对方 之前我做的XX支付插件的项目是将...
  • dianyueneo
  • dianyueneo
  • 2015-01-16 12:10
  • 2072

Android apk资源保护方案研究分析

Android apk资源保护方案研究分析 Android APP以APK文件形式存在,APP中主要包含应用程序代码和资源文件两部分,如何有效保护Android应用中的代码、资源的安全一直是开发者最关心的话题。针对应用程序代码,目前主要有两类方案,即代码混淆和应用加密。比较常见的代码混...
  • chenjiang2936
  • chenjiang2936
  • 2016-11-11 09:38
  • 325

Android APK加固技术方案调研

@author ASCE1885的 Github 简书 微博 CSDN 最近项目中需要实现自己的APK加固方案,因此就有了这一篇调研报告。 软件安全领域的攻防向来是道高一尺魔高一丈,攻防双方都处于不断的演变和进化过程中,因此软件加固技术需要长期持续的研究与投入。目前成熟的第三方解决方案1. ...
  • ACE1985
  • ACE1985
  • 2015-07-23 22:16
  • 8173

对于C++中公有(public)、私有(private)、保护(protected),访问权限的一点总结

写在前面的话,我是一个菜鸟程序猿,正在走在这条不归路上…… 最近在项目实施过程中,遇到一个小问题,就是对于一个之前一直可以访问的函数在别的模块已经声明头文件的情况下,突然之间不能访问了。后面经过排查,是因为函数权限的问题,也就是想写这个的一点来由,记下一笔,让自己可以慢慢积累! 关于C++中的公...
  • linxihe123
  • linxihe123
  • 2017-04-24 09:54
  • 259

Android资源访问机制

Android经常使用getResources()方法获取app的一些资源,getResource()方法是Context接口的方法,具体是有ContextImpl类实现的,Activity、Service、Application都是继承自Context接口。      ...
  • linghu_java
  • linghu_java
  • 2015-01-13 17:22
  • 3019

Android应用安全隐患现状,资源文件加密/安全防护进化史

前言     有安全数据显示,2014全年,Android用户感染恶意程序3.19亿人次,平均每天恶意程序感染量达到了87.5万人次。同时,Android应用被破解和盗版等事件也层出不穷。很明显,Android平台已经成为恶意程序和破解者攻击的众矢之的,于是越来越多的Androi...
  • a125138
  • a125138
  • 2015-06-04 20:42
  • 3444

线程控制和线程资源保护

第十五篇 线程控制和线程资源保护1、引言 1)从前面的课程我们知道,每个进程都有自己的进程空间(也称为虚拟内存空间),并且在内核中每 个进程都有属于自己的task_struct进程表项来描述自己,这个表项中包含一个很重要的东西,那 就是虚拟地址与实际物理地址的映射表。 2)每个进程的空间的范...
  • u012724150
  • u012724150
  • 2016-08-18 09:59
  • 1212

windows资源保护找到了损坏文件但无法修复

windows系统中执行命令"sfc /scannow"之后提示"windows资源保护找到了损坏文件但无法修复"可以按如下操作(必须是win8且联网): 管理员权限运行cmd,执行命令“dism /online /cleanup-image /re...
  • onestow
  • onestow
  • 2014-12-08 20:23
  • 3398

保护JSP页面不被非法访问

为了更好地保护你的JSP避免未经授权的访问和窥视, 一个好办法是将页面文件存放在Web应用的WEB-INF目录下。     通常JSP开发人员会把他们的页面文件存放在Web应用相应的子目录下。一个典型的商店应用程序的目录结构如图2所示。跟catalog (商品目录)相关...
  • gkyh899
  • gkyh899
  • 2013-10-23 23:42
  • 775

当配置IIS遇到“访问由于 ACL 对所请求资源的设置被拒绝”时

     配置iis时明明设置可以匿名访问了,却仍然提示要输入密码,这时错误提示:访问由于 ACL 对所请求资源的设置被拒绝。可以按按下面的方法解决:    新建一个用户,控制面板-管理工具-计算机管理-本地用户和组-用户,然后在...
  • cndotaci
  • cndotaci
  • 2009-04-05 00:49
  • 7167
    个人资料
    • 访问:1209868次
    • 积分:8962
    • 等级:
    • 排名:第2524名
    • 原创:115篇
    • 转载:72篇
    • 译文:0篇
    • 评论:274条
    博客专栏
    联系方式
    最新评论