`
yangsongjing
  • 浏览: 248578 次
  • 性别: 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);
 }
}

 

 

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

 

分享到:
评论

相关推荐

    Android手机客户端与服务器之间通信socket

    在Android应用开发中,手机客户端与服务器之间的通信是至关重要的,而Socket通信提供了一种可靠的、基于连接的数据传输方式。本文将深入探讨Android客户端如何利用Socket进行与服务器的交互。 一、Socket基础知识 ...

    安卓手机客户端连接服务器工具

    安卓手机客户端连接服务器工具

    基于SSL/TLS协议的FTP客户端和服务器端

    **基于SSL/TLS协议的FTP客户端和服务器端** 在当今的网络环境中,数据安全尤为重要,尤其是在文件传输过程中。FTP(File Transfer Protocol)虽然方便,但其明文传输的特性使得数据容易被窃取或篡改。为了解决这个...

    Android studio客户端连接 Delphi XE REST DataSnap服务器

    在本文中,我们将深入探讨如何使用Android Studio开发客户端应用程序,以连接到运行在Delphi XE上的REST DataSnap服务器。REST(Representational State Transfer)是一种轻量级的、基于HTTP的架构风格,常用于...

    手机远程监控客户端和服务器端.rar

    总结起来,"手机远程监控客户端和服务器端.rar"提供了Android平台上远程监控系统的完整源代码,涵盖了客户端UI设计、网络连接、数据传输和服务器端的视频处理等多个重要环节。通过深入学习和理解这些源代码,开发者...

    android客户端与后台服务器交互

    1. **Android客户端**:Android是Google开发的开源移动操作系统,用于智能手机和平板电脑。在本示例中,Android客户端负责用户界面、数据获取和显示。它使用HTTP或HTTPS协议通过网络与服务器进行通信。Android SDK...

    基于android的手机监控系统客户端源代码和服务器端

    本项目是基于Android平台的手机监控系统,它利用了Java Media Framework (JMF) 实现视频流处理,为用户提供了一套完整的客户端和服务器端解决方案。下面我们将深入探讨这个系统的组成部分和相关知识点。 首先,我们...

    计算机网络编程socket客户端与服务器通讯

    该设计主要包括了客户端与服务器端的建立连接、数据传输等关键步骤,并通过中间件实现了客户端对MySQL数据库的操作。 #### 设计背景与目标 随着移动互联网的发展,Android平台因其开放性受到了广泛的关注。为了更...

    WirelessOrder客户端和服务器端+mysql 简单android无线订餐系统

    WirelessOrder系统是一个轻量级的解决方案,主要由Android客户端应用和服务器端接口组成,实现了用户通过手机端进行菜品浏览、选择、下单和支付等功能。该系统适合初学者进行学习和实践,有助于理解Android应用程序...

    易语言服务器和E4A客户端

    易语言服务器端可能使用了网络通信模块,如TCP/IP协议栈,来接收和响应来自E4A客户端的连接请求。服务器可能还包含了状态检查功能,通过某种机制判断程序是否已经启动并运行,这通常通过检查进程是否存在或者特定...

    安卓socket通信客户端与服务器端

    - `MySocketServer`可能对应服务器端的核心服务代码,负责监听和处理客户端的Socket连接。 4. **安全性和优化**: - **安全性**:在实际应用中,应考虑使用SSL/TLS来加密Socket通信,防止数据在传输过程中被窃取...

    android studio Socket客户端服务器通信 TCP/IP通信

    android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信

    客户端和服务器

    6. 当通信完成后,客户端和服务器关闭套接字连接。 在C++中,编写客户端和服务器程序时,需要关注以下关键点: - 网络协议:选择合适的通信协议,如HTTP、FTP、TCP或UDP,取决于应用需求。 - 错误处理:确保对网络...

    手机客户端C/S结构聊天室

    手机客户端C/S(Client/Server)结构聊天室是一种常见的移动通信应用设计模式,它涉及客户端应用程序和服务器端程序之间的交互。在这个系统中,手机不仅作为用户界面的展示设备,还扮演了服务器的角色,处理来自其他...

    MQTT,本例中包含客户端和服务器端

    MQTT客户端是连接到MQTT服务器(也称为代理)的设备或应用程序,可以是传感器、智能手机、PC或其他任何具有网络连接能力的设备。客户端可以是发布者或订阅者,或者同时具备这两种角色。 1. **发布者**:发布者负责...

    MQTT_手机客户端调试软件 亲测可用

    手机客户端调试对于开发和维护MQTT应用至关重要,特别是对于那些在移动设备上运行的应用。MyMQTT_v1.0_apkpure.com.apk是一款专为安卓用户设计的MQTT调试工具,允许用户通过安卓手机快速连接到MQTT服务器。以下是...

    安卓Android源码——客户端连接服务器并交互实例.zip

    - 客户端-服务器模型:在Android应用中,客户端通常指的是运行在用户手机上的应用,而服务器则负责处理请求和提供数据。 - HTTP/HTTPS协议:Android客户端与服务器最常用的通信协议,HTTP用于传输数据,HTTPS则...

    简易服务器和客户端

    在这个项目中,"testsocket"可能是一个测试用例,用于验证服务器和客户端之间的连接和数据传输功能。 5. **端口号**:在TCP/IP协议中,每个连接都有一个唯一的端口号,用于区分不同的服务。服务器需要监听一个特定...

    Android聊天客户端与服务器代码

    Socket允许客户端和服务器之间建立连接,进行双向通信,实现消息的发送和接收。 在聊天应用中,数据通常以JSON(JavaScript Object Notation)格式在网络间传输,因为JSON轻量级、易于读写,并且支持多种语言解析。...

    Android手机访问服务器登陆程序(客户端、服务器端、Mysql数据库)

    该程序是一个完整的解决方案,用于实现Android手机访问服务器进行登录操作,涵盖了客户端应用、服务器端接口以及Mysql数据库的集成。以下是对每个组成部分的详细说明: **Android客户端**:Android客户端是用户与...

Global site tag (gtag.js) - Google Analytics