提交成功时,从服务器端返回数据“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的更多相关文章

  1. SuperMap-iServer-单点登录功能验证(CAS)

    SuperMap-iServer-单点登录功能验证(CAS) 1.测试目的: 验证SuperMap-iServer使用CAS单点登录的功能是否正常. 2.测试环境: SuperMap-iServer8 ...

  2. 一步步开发自己的博客 .NET版(3、注册登录功能)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  3. 从无到有实现登录功能以及thinkphp怎么配置数据库信息

    好开心,终于解决了.从学习android到现在写登录功能已经不是一次两次了,如今再写想着肯定是信手拈来,没有想到的是尽然折磨了我一天的时间才搞定它.唉...... 先来看几张截图,这次的登录跟以往的不 ...

  4. 如何在ios中集成微信登录功能

    在ios中集成微信的登录功能有两种方法 1 用微信原生的api来做,这样做的好处就是轻量级,程序负重小,在Build Settings 中这样设置 然后设置 友盟的设置同上,但是要注意,加入你需要的所 ...

  5. php之登录功能实现。

    项目默认存在的东西:jquery库[jquery.min.js] 登录功能实现的基本逻辑: 1.书写前台php功能基本页面:(index.php) a.编写基本功能,比如用户名.密码.登录 b.引用j ...

  6. DWR实现扫一扫登录功能

    前言 <DWR实现后台推送消息到Web页面>一文中已对DWR作了简介,并列出了集成步骤.本文中再一次使用到DWR,用以实现扫一扫登录功能. 业务场景 web端首页点击"登陆&qu ...

  7. Struts+Hibernate+Spring实现用户登录功能

    通过登录案例实现三大框架之间的整合,登录功能是任何系统和软件必不可少的一个模块,然而通过这个模块来认识这些复杂的框架技术,理解数据流向和整个设计思路是相当容易的.只有在掌握了这些小模块的应用后,才能轻 ...

  8. Struts2整合Hibernate3实现用户登录功能

    所用技术:struts2 ,hibernate,jsp,mysql 本DEMO仅仅实现用户登录功能,采用MVC思想,自己也觉得相对是比较简单,比较容易理解数据流向的一个例子,通过整合这个过程,能够清晰 ...

  9. 网站集成QQ登录功能

    最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,于是去QQ的开放平台官网研究了一下相关资料,经过自己的艰苦探索,终于实现了集成QQ登录的功能,现在把相关的开发经验总结一 ...

随机推荐

  1. 第19讲- UI组件之_Button、checkbox、radio

    第19讲 UI组件之_Button.checkbox.radio 四.按钮Button Button继承自TextView,间接继承自View.当用户对按钮进行操作的时候,触发相应事件,如点击,触摸. ...

  2. AJAX上传文件

    function up_files() { var fileSelect = document.getElementById('file-select'); var files = fileSelec ...

  3. oracle插入特殊字符&#39;&amp;&#39;问题

    oracle转义字符开关:set define off   /   show define

  4. LeetCode 58 Spiral Matrix II

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  5. 关于时间的操作(JavaScript版)——年月日三级级联(默认依次显示请选择年、请选择月和请选择日)

    这篇博客和前一篇博客基本同样,仅仅是显示的默认值不同: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN&quo ...

  6. Hacker(24)----防范密码被轻易破解

    无论什么类型密码,用户在设置时都有非常小心,防止自己设置的密码被他人轻易破解.为保护重要的文件和资料,可采用加密工具进行加密,即可选择Win7系统自带的BitLocker,也可使用Internet中很 ...

  7. WndPric的使用方法

    protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOS ...

  8. (转)SQL Server2005 异常处理机制(Begin try Begin Catch)

    begin try --SQL  end trybegin catch --sql (处理出错动作) end catch我们将可能会出错的sql 写在begin try...end try 之间,若出 ...

  9. Memcached的一些知识

    一.内存分配在Memcached内存结构中有两个非常重要的概念:slab 和 chunk,我们先从下图中对这两个概念有一个感性的认识: memcached内存结构Slab是一个内存块,它是memcac ...

  10. cellForRowAtIndexPath方法不执行的那些坑

    今天用到了uitableview,是xib形式的.不过cellForRowAtIndexPath方法死活不执行,检查了返回的row数量,section的数量,数据源,代理都没问题,不过cellForR ...