`
yangsongjing
  • 浏览: 244337 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

手机客户端和服务器的连接

阅读更多

客户端代码:

 

package com.icss.test_HttpClient;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.HttpRequestRetryHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.AbstractHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HttpContext;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
 private EditText name;
 private EditText password,view;
 private Button submit;
 private  DefaultHttpClient client;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        name=(EditText)findViewById(R.id.name);
        password=(EditText)findViewById(R.id.password);
        submit=(Button)findViewById(R.id.submit);
        view=(EditText)findViewById(R.id.view);
       
       
      
        submit.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    String op="login";
    String n=name.getText().toString();
    String p=password.getText().toString();
    
    /**
     * 1.通过DefaultHttpClient来创建一个DefaultHttpClient对象
     * 2.请求方式,post/get->HttpPost/HttpGet这两个类
     *  HttpPost post=new HttpPost("http://192.168.100.36:8080/news/news.do");
     * 3.传参
     * 都可用,setParams(HttpParams params);post特有的带参方法,post对象.setEntity()
     * 注意UrlEncodedFormEntity类,里面传得参都是键值对,所以一般都用list
     */
    
    
    client =new DefaultHttpClient();
    HttpPost post=new HttpPost("http://192.168.100.36:8080/news/news.do");
    
    List<BasicNameValuePair> list=new ArrayList<BasicNameValuePair>();
    list.add(new BasicNameValuePair("op","login"));
    list.add(new BasicNameValuePair("name",n));
    list.add(new BasicNameValuePair("password",p));
    
     
    try {
     post.setEntity(new UrlEncodedFormEntity(list, "utf-8"));
     
     HttpResponse response = client.execute(post);//请求并相应
     
     if(response.getStatusLine().getStatusCode()==200){
      //流 response.getEntity().getContent();获取流
     InputStream inputstream=response.getEntity().getContent();
     
     byte [] data=FileuUtil.getFile(inputstream);
     String s=new String(data,"utf-8");//将字节数组转换成字符串
     Toast.makeText(MainActivity.this, s.toString(), 10000).show(); 
     }else{
      
      Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_LONG).show();
     }
    } catch (Exception e) {
     e.printStackTrace();
    }
    
    
   }
  });
//        HttpRequestRetryHandler myRetryHandler = new HttpRequestRetryHandler() {
//
//   @Override
//   public boolean retryRequest(IOException exception,
//     int executionCount, HttpContext context) {
//     //如果重连次数太多,则放弃重新连接
//         if (executionCount >= 5) {
//           return false;
//         }else{
//    return true;
//         }
//   }};
//   ((AbstractHttpClient) client).setHttpRequestRetryHandler(myRetryHandler);
//       
   }

}

 

 

 

 

package com.icss.test_HttpClient;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileuUtil {
 //从输入流中读取数据,返回成自己数组
 public static byte[] getFile(InputStream inputStream) throws IOException{
  ByteArrayOutputStream baos=new ByteArrayOutputStream();//缓存
  byte[] buffer=new byte[1024];
  int length=-1;
  while((length=inputStream.read(buffer))!=-1){
   baos.write(buffer,0,length);  //将数据缓存到内存中
  }
  inputStream.close();
  
  return baos.toByteArray();//这里就返回一个byte[]
  
 }
}

 

 

服务器端:

 

 

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class NewsServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  
  String op =request.getParameter("op");
  
  System.out.println("登录成功");
  
  if(op!=null&&op.equals("login")){
   login(request,response);
  }else if(op!=null&&op.equals("list")){
   list(request,response);
   
  }
 }

 //传参:
 
 private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  if(request.getSession().getAttribute("user")!=null){
   System.out.println("list方法中的name:"+request.getParameter("pname"));
   System.out.println("list方法中的pass:"+request.getParameter("ppass"));
   request.getRequestDispatcher("list.jsp").forward(request, response);
   
  }else{
   request.setAttribute("msg", "你还没有登录,请你先登录!");
   request.getRequestDispatcher("error.jsp").forward(request, response);
  }
  
 }


 private void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String name=request.getParameter("name");
  String password=request.getParameter("password");
  
//  request.setAttribute("name", name);
//  request.setAttribute("pass", password);
  
  
  if(name.equals("a")&&password.equals("a")){
   request.getSession().setAttribute("user", name);//
   
   request.getRequestDispatcher("news.do?op=list").forward(request, response);
  }else{
   request.setAttribute("msg", "用户名或密码错误!");
   request.getRequestDispatcher("error.jsp").forward(request, response);
  }
 }


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

 

 

权限自己查看文档配置就好

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics