android与服务器servlet通信

通信用到http协议,首先要给android一个internet的权限。

<uses-permission android:name="android.permission.INTERNET"/>


首先由android的异步线程向服务器发送请求,然后服务器响应并发送响应报文,最后由android接收。


android端代码:

package com.example.login;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	private Button button1;
	private Button button2;
	private Button button3;
	private EditText et_username;
	private EditText et_password;
	private int result=0;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.login);
		 button1 = (Button)findViewById(R.id.button1);
		 et_username= (EditText)findViewById(R.id.et_username);
		 et_password= (EditText)findViewById(R.id.et_password);
		 
		 
		button1.setOnClickListener(new OnClickListener(){

			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(MainActivity.this,Success.class);
				new connect().execute();
				if(result==0){
					Toast.makeText(getBaseContext(), "帐号或密码错误",Toast.LENGT							H_LONG	 ).show();
				}else{
					startActivity(intent);
				}
				
			}
			
		});
		
		
	}

	
	
	
	
	
	
	
	public class connect extends AsyncTask {

		// 通过AsyncTask类提交数据 异步显示
		

		

		@Override
				protected Object doInBackground(Object... params_obj) {
				result=0;
				String uriAPI = "http://202.196.35.139:8080/ch06a/login?username="+et_username.getText()+"&password="+et_password.getText();
				HttpGet httpRequest = new HttpGet(uriAPI);
				 
			          /*发送请求并等待响应*/  
			          HttpResponse httpResponse = null;
					try {
						httpResponse = new DefaultHttpClient().execute(httpRequest);
					} catch (ClientProtocolException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}  
			          /*若状态码为200 ok*/  
			          if(httpResponse.getStatusLine().getStatusCode() == 200)   
			          {  
			        	 
			        	  HttpEntity httpEntity=httpResponse.getEntity(); 
						

			               InputStream inputStream = null;
						try {
							inputStream = httpEntity.getContent();
						} catch (IllegalStateException e) {
							// TODO Auto-generated catch block
							
							e.printStackTrace();
						} catch (IOException e) {
							 
							e.printStackTrace();
						}  
			                BufferedReader bufferreader=new BufferedReader(new InputStreamReader(inputStream));  
			                
			                
								try {
									result = bufferreader.read();
									
								} catch (IOException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								} 
							
			          
							
			                
			                 

			          }  
			          else  
			          {  
			            System.out.println("!!!!!!!!!!!!!!!!!!Error Response: "+httpResponse.getStatusLine().toString());  
			          }  
		
					
					return result;
				}



	}

}



服务器端代码:

package servlet;

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 dao.AddressDao;
import entity.Address;

public class login extends HttpServlet {

	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		PrintWriter pw = response.getWriter();
		


	
		  
        try{  
                        //做登录判断后返回的结果  
        	Boolean a = password.equals(addressDao.login(username))   ;      
                response.setCharacterEncoding("utf-8");            
        	PrintWriter out = response.getWriter();
                        
            if(a){  
                                //登录成功,向手机写数据  
            	out.write(1);
            	
            }
            else {  
                //登录失败  
                out.write(0);  
            }  
            out.flush();
            out.close();
        }catch(Exception e){  
            e.printStackTrace();  
        }  
		
	}


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



}











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值