读书人

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

发布时间: 2012-12-25 16:18:28 作者: rapoo

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

客户端代码:

?

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);
?}
}

?

?

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

?

读书人网 >编程

热点推荐