通信用到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 {
}
}