java web和Android第一次交互(登录)

一.开发环境

Android代码用eclipse开发 javaweb用Ide开发

二.Android代码

新建Android项目

package com.example.testlogin;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
public static String Home="http://192.168.1.45:8080/Test/login";//换成自己的地址
private static TextView tv;
private TextView top2;
public static Handler mHandler=new Handler(){
public void handleMessage(android.os.Message msg) {
tv.setText((String)msg.obj);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText user=(EditText)findViewById(R.id.edittext);
final EditText pass=(EditText)findViewById(R.id.edittext2);
tv=(TextView)findViewById(R.id.top);
top2=(TextView)findViewById(R.id.top2);
top2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
loginByPost(user.getText().toString(),pass.getText().toString()); //测试帐号123  密码123
}
}).start();
}
});

}


public static String loginByPost(String username,String password){    
       try {
           URL url = new URL(Home);
           HttpURLConnection conn =  (HttpURLConnection) url.openConnection();
           conn.setConnectTimeout(5000);
           conn.setRequestMethod("POST");
           String data = "username="+URLEncoder.encode(username)+"&password="
                   +URLEncoder.encode(password);
           System.out.println(data);
           conn.setRequestProperty("Content=Type", "application/x-wwww-form-urlencoded");
           conn.setRequestProperty("Content-length", data.length()+"");
           conn.setRequestProperty("Accept-Charset", "utf-8");
           conn.setRequestProperty("contentType", "utf-8");
           conn.setDoOutput(true);
           OutputStream os = conn.getOutputStream();
           os.write(data.getBytes());
           int code = conn.getResponseCode();
           System.out.println(code);
           if (code == 200) {
               InputStream is = conn.getInputStream();
               String text =URLDecoder.decode( ReadInputStream(is), "UTF-8");
               Message msg=new Message();
               msg.obj=text;
               mHandler.sendMessage(msg);
               return text;
           }else {
               return null;
           }

       } catch (MalformedURLException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
           System.out.println("111111");
       } catch (ProtocolException e) {
           System.out.println("222222");
           e.printStackTrace();
       } catch (IOException e) {
           System.out.println("33333");
           e.printStackTrace();
       }
       return null;
   }
//读取输入流
public static String ReadInputStream(InputStream is) {
       try {
           ByteArrayOutputStream baos = new ByteArrayOutputStream();
           int len = 0;
           byte[] buffer = new byte[1024];
           while ((len = is.read(buffer)) != -1) {
               baos.write(buffer, 0, len);
           }
           is.close();
           baos.close();
           byte[] result = baos.toByteArray();
           return new String(result);


       } catch (Exception e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
           return "将输入流转化为字符串失败";
       }
   }
}
布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@android:color/white"
    tools:context="com.example.testlogin.MainActivity" >


    <TextView
        android:id="@+id/top"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <EditText 
        android:layout_below="@id/top"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:id="@+id/edittext"/>
    <EditText 
           android:layout_width="100dp"
        android:layout_height="50dp"
            android:layout_below="@id/edittext"
        android:id="@+id/edittext2"/>
    <TextView
        android:id="@+id/top2"
        android:layout_below="@id/edittext2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
</RelativeLayout>
主配置文件 添加联网权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

三.服务端 配置tomcat

  1. 新建web项目,在web下新建libs包 导入servlet-api.jar
    2.配置web.
<servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>com.marven.web.Login</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>
3.Login代码
package com.marven.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;

/**
 * Created by Marven on 2016/8/2.
 */
public class Login extends HttpServlet{

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


        request.setCharacterEncoding("UTF-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        if ("123".equals(username)&&"123".equals(password)) {
            System.out.println("登录成功");
            response.getOutputStream().write("登录成功".getBytes("utf-8"));
            System.out.println("返回的数据:" + "登录成功".getBytes("utf-8"));

        }else {
            System.out.println("登录失败");
            response.getOutputStream().write("登录失败".getBytes("utf-8"));

        }

    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");
        response.setHeader("content-type", "text/html;charset=UTF-8");
        doGet(request, response);

    }
}

完毕

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值