AsyncTask实现登录功能,上传图片,get,post

提交成功时,从服务器端返回数据“load success”

用户名、密码正确后成功登录,并且在服务器端的文件保存目录上看到了从客户端上传的图片。
客户端代码:
MainActivity.java
import java.io.ByteArrayOutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List; 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.util.EntityUtils; import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Base64;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast; public class Activity2 extends Activity { private ProgressDialog dialog;
private EditText name;
private EditText pass;
private Context context;
private static final String PATH="http://172.16.30.146:8080/Lesson/servlet/LoginServlet?";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
context=this;
name=(EditText) findViewById(R.id.name);
pass=(EditText) findViewById(R.id.pass);
dialog= new ProgressDialog(context);
dialog.setCancelable(false);
dialog.setTitle("提示");
dialog.setMessage("下载中,请稍等.....");
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); } public void myget(View v)
{
String myname=name.getText().toString().trim();
String mypass=pass.getText().toString().trim();
if(TextUtils.isEmpty(myname) || TextUtils.isEmpty(mypass))
{
Toast.makeText(context, "用户名或密码不能为空", ).show();
return;
} new MyGetTask().execute(myname,mypass);
} /*采用异步任务
* 参数一代表 执行异步任务时传递的参数的类型
* 参数二 如果不采用进度,则填Void,否则填 Integer
* 参数三 是指网络回传回来的数据类型
*/
public class MyGetTask extends AsyncTask<String,Void,String>{ @Override
protected void onPreExecute() {
dialog.show();
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
//1.打开浏览器
HttpClient client=new DefaultHttpClient();
//2.输入网址
String urlPath=null;
try {
urlPath=PATH+"name="+URLEncoder.encode(params[], "utf-8")+"&pass="+URLEncoder.encode(params[], "utf-8"); //3.执行并得到回应
HttpResponse response=client.execute(new HttpGet(urlPath)); if(response.getStatusLine().getStatusCode()==)
{ String str= EntityUtils.toString(response.getEntity());
return str;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return null;
} @Override
protected void onPostExecute(String result) {
dialog.dismiss();
Toast.makeText(context, "得到的回应是:"+result, ).show(); super.onPostExecute(result);
} } public void mypost(View v)
{
String myname=name.getText().toString().trim();
String mypass=pass.getText().toString().trim();
if(TextUtils.isEmpty(myname) || TextUtils.isEmpty(mypass))
{
Toast.makeText(context, "用户名或密码不能为空", ).show();
return;
} new MyTaskByPost().execute(myname,mypass); /*
*/
} public class MyTaskByPost extends AsyncTask<String, Void, String>{ //Volley AsyncHttpClient @Override
protected void onPreExecute() {
dialog.show();
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
//1.打开浏览器
HttpClient client=new DefaultHttpClient();
//2.输入网址
String urlPath="http://172.16.30.146:8080/Lesson/servlet/LoginServlet";
try {
//3.设置向服务器提交的数据
List<NameValuePair> parameters=new ArrayList();
NameValuePair n = new BasicNameValuePair("name",params[]);
NameValuePair p = new BasicNameValuePair("pass",params[]);
parameters.add(n);
parameters.add(p);
Bitmap map=BitmapFactory.decodeResource(getResources(), R.drawable.myphoto);
ByteArrayOutputStream out=new ByteArrayOutputStream();
map.compress(Bitmap.CompressFormat.PNG, , out); byte[] result=out.toByteArray();
String img= Base64.encodeToString(result, , result.length, Base64.DEFAULT); NameValuePair m = new BasicNameValuePair("img",img);
parameters.add(m); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8"); HttpPost httpPost = new HttpPost(urlPath);
httpPost.setEntity(entity);
//3.执行并得到回应
HttpResponse response=client.execute(httpPost); if(response.getStatusLine().getStatusCode()==)
{ String str= EntityUtils.toString(response.getEntity());
return str;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return null;
}
@Override
protected void onPostExecute(String result) {
dialog.dismiss();
Toast.makeText(context, "得到的回应是:"+result, ).show(); super.onPostExecute(result);
}
} }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="36dp"
android:layout_marginTop="58dp"
android:text="用户名" /> <EditText
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_marginLeft="53dp"
android:layout_toRightOf="@+id/textView1"
android:ems="" > <requestFocus />
</EditText> <TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/name"
android:layout_marginTop="49dp"
android:text="密码" /> <EditText
android:id="@+id/pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView2"
android:layout_alignLeft="@+id/name"
android:ems=""
android:inputType="textPassword" /> <Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView2"
android:layout_marginTop="33dp"
android:onClick="myget"
android:text="get方式向服务器提交数据" /> <Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button1"
android:layout_marginTop="33dp"
android:onClick="mypost"
android:text="post方式向服务器提交数据" /> </RelativeLayout>
清单里注册权限:<uses-permission android:name="android.permission.INTERNET"/>
服务器端代码:
新建Servlet: LoginServlet.java
package com.my.android; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import sun.misc.BASE64Decoder; /**
* Servlet implementation class LoginServlet
*/
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("utf-8");
String myname = request.getParameter("name");
String mypass = request.getParameter("pass");
PrintWriter writer = response.getWriter();
System.out.println("myname=" + myname + " mypass=" + mypass); String img = request.getParameter("img");
byte[] b = new BASE64Decoder().decodeBuffer(img);
File file = new File("F:", "myphoto.png");
if (!file.exists())
file.createNewFile();
OutputStream myout = new FileOutputStream(file);
myout.write(b);
myout.close(); writer.write("load success");
writer.flush();
writer.close(); } protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }
AsyncTask实现登录功能,上传图片,get,post的更多相关文章
- SuperMap-iServer-单点登录功能验证(CAS)
SuperMap-iServer-单点登录功能验证(CAS) 1.测试目的: 验证SuperMap-iServer使用CAS单点登录的功能是否正常. 2.测试环境: SuperMap-iServer8 ...
- 一步步开发自己的博客 .NET版(3、注册登录功能)
前言 这次开发的博客主要功能或特点: 第一:可以兼容各终端,特别是手机端. 第二:到时会用到大量html5,炫啊. 第三:导入博客园的精华文章,并做分类.(不要封我) 第四:做 ...
- 从无到有实现登录功能以及thinkphp怎么配置数据库信息
好开心,终于解决了.从学习android到现在写登录功能已经不是一次两次了,如今再写想着肯定是信手拈来,没有想到的是尽然折磨了我一天的时间才搞定它.唉...... 先来看几张截图,这次的登录跟以往的不 ...
- 如何在ios中集成微信登录功能
在ios中集成微信的登录功能有两种方法 1 用微信原生的api来做,这样做的好处就是轻量级,程序负重小,在Build Settings 中这样设置 然后设置 友盟的设置同上,但是要注意,加入你需要的所 ...
- php之登录功能实现。
项目默认存在的东西:jquery库[jquery.min.js] 登录功能实现的基本逻辑: 1.书写前台php功能基本页面:(index.php) a.编写基本功能,比如用户名.密码.登录 b.引用j ...
- DWR实现扫一扫登录功能
前言 <DWR实现后台推送消息到Web页面>一文中已对DWR作了简介,并列出了集成步骤.本文中再一次使用到DWR,用以实现扫一扫登录功能. 业务场景 web端首页点击"登陆&qu ...
- Struts+Hibernate+Spring实现用户登录功能
通过登录案例实现三大框架之间的整合,登录功能是任何系统和软件必不可少的一个模块,然而通过这个模块来认识这些复杂的框架技术,理解数据流向和整个设计思路是相当容易的.只有在掌握了这些小模块的应用后,才能轻 ...
- Struts2整合Hibernate3实现用户登录功能
所用技术:struts2 ,hibernate,jsp,mysql 本DEMO仅仅实现用户登录功能,采用MVC思想,自己也觉得相对是比较简单,比较容易理解数据流向的一个例子,通过整合这个过程,能够清晰 ...
- 网站集成QQ登录功能
最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,于是去QQ的开放平台官网研究了一下相关资料,经过自己的艰苦探索,终于实现了集成QQ登录的功能,现在把相关的开发经验总结一 ...
随机推荐
- 使用JS截取字符串函数详解
一.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); //a ...
- pyqt例子搜索文本
#!/usr/bin/env python #-*- coding:utf-8 -*- import sip sip.setapi('QString', 2) sip.setapi('QVariant ...
- tooltips弹出框制作
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- JAVA学习第三十课(经常使用对象API)- String类:类方法练习
intern方法 public class Main { public static void main(String[] args) { String str1 = new String(" ...
- 标准I/O介绍
标准I/O库 1. 标准I/O介绍 不仅是在UNIX系统中,很多操作系统上都实现了标准I/O库. 标准I/O库由ANSI C 标准说明 标准 I/O 库处理很多细节,例如带有缓冲分配.以优化长度执行的 ...
- Eclipse汉化后怎么改回英文版 (中文 改 英文)
Eclipse汉化后怎么改回英文版(可切换中英文) 很多朋友将MyEclipse汉化后还想改回英文的,其实只要修改MyEclipse的配置文件就可以了,这里我以MyEclipse7.0为例演示一下如何 ...
- poj 3104 二分
Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12568 Accepted: 3243 Descripti ...
- $.unique() 对象组成的数组去掉重复对象
发现一件事,一个完全由对象组成的数组,用$.unique()方法去掉重复的时候不管用 var arr = [{text:'第一个',value:'1'},{text:'第二个',value:'2'}, ...
- 火狐的bug
初次启动火狐的界面并且默认是最大化的情况下,第一个业签时会发现火狐的浏览器无法达到下边框,请看图 途中可以看到,body区域没有填充满浏览器可用区域.但是当浏览器已经启动页签,现在是第二个页签时,则不 ...
- python学习第二天 --变量及其字符串
python变量: 在计算机程序中,变量不仅可以是数字,还可以是任意数据类型. 在Python程序中,变量是用一个变量名表示,变量名必须是大小写英文.数字和下划线(_)的组合,且不能用数字开头. 在P ...