android 38 Abdroid客户端和服务端交互
服务端:
- package com.sxt.day05;
- import java.io.IOException;
- import java.util.ArrayList;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.codehaus.jackson.map.ObjectMapper;
- import com.sxt.day05.entity.User;
- @WebServlet("/Login")
- public class Login extends HttpServlet {
- private static final long serialVersionUID = 1L;
- ArrayList<User> users;
- public Login() {
- super();
- User user=new User("张飞", "1234", "13377889966", "zf@qq.com");
- users=new ArrayList<>();
- users.add(user);
- user=new User("王菲", "1234", "13577889966", "wf@qq.com");
- users.add(user);
- user=new User("刘亦菲", "1234", "133077889966", "lyf@qq.com");
- users.add(user);
- user=new User("咖啡", "1234", "13877889966", "kf@qq.com");
- users.add(user);
- }
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String name=request.getParameter("name");//获取客户端发过来的名字
- if(name==null){
- return ;
- }
- name=new String(name.getBytes("iso8859-1"),"utf-8");
- String pwd=request.getParameter("pwd");
- for(int i=0;i<users.size();i++){
- User user=users.get(i);
- if(name.equals(user.getName())&&pwd.equals(user.getPwd())){
- ObjectMapper om=new ObjectMapper();//jackson-core-asl.jar
- om.writeValue(response.getOutputStream(), user);//将user对象以输出流发送给客户端
- System.out.println(user.toString());
- break;
- }
- }
- }
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- ArrayList<User> list=new ArrayList<>();
- request.setCharacterEncoding("utf-8");
- String name=request.getParameter("name");
- for(int i=0;i<users.size();i++){
- User user=users.get(i);
- if(user.getName().indexOf(name)>=0){//name在user的名字中
- list.add(user);
- }
- }
- ObjectMapper om=new ObjectMapper();
- om.writeValue(response.getOutputStream(), list);
- }
- }
客户端:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <EditText
- android:id="@+id/etName"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="输入姓名"
- android:text="菲"/>
- <EditText
- android:id="@+id/etPassword"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="输入登陆密码"
- android:text="123456"
- android:password="true"/>
- <Button
- android:id="@+id/btnLogin"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="GET方式登陆" />
- <Button
- android:id="@+id/btnQuery"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="POST方式查询" />
- </LinearLayout>
客户端Activity:
- package com.sxt.day06_03;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.io.UnsupportedEncodingException;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.net.URLEncoder;
- import java.util.List;
- import org.apache.http.client.utils.URLEncodedUtils;
- import org.codehaus.jackson.map.ObjectMapper;
- import com.sxt.day06.entity.User;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.EditText;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- private static final String PATH="http://10.0.2.2:8080/Day06_Servlet/Login_Servlet";//服务端地址
- EditText metName,metPwd;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initView();
- setListener();
- }
- private void setListener() {
- setLoginClickListener();
- setQueryClickListener();
- }
- private void setQueryClickListener() {//查询,POST方式
- findViewById(R.id.btnQuery).setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- new Thread(){//访问网络要在工作线程搞
- public void run() {
- String name=metName.getText().toString();
- name="name="+name;
- try {
- byte[] data=name.getBytes("utf-8");
- URL url=new URL(PATH);
- HttpURLConnection conn=(HttpURLConnection) url.openConnection();
- conn.setConnectTimeout(5000);
- conn.setReadTimeout(5000);
- conn.setRequestMethod("POST");
- conn.setDoOutput(true);//像服务端发送数据
- OutputStream out = conn.getOutputStream();
- out.write(data);
- out.flush();
- if(conn.getResponseCode()!=200){
- return ;
- }
- ObjectMapper om=new ObjectMapper();
- List<User> users=om.readValue(conn.getInputStream(), List.class);
- Log.i("main",users.toString());
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- };
- }.start();
- }
- });
- }
- private void setLoginClickListener() {
- findViewById(R.id.btnLogin).setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- new Thread(){//访问网络要在工作线程搞
- public void run() {
- String name=metName.getText().toString();
- String password=metPwd.getText().toString();
- StringBuilder sb=new StringBuilder(PATH);//PATH地址
- try {
- sb.append("?name=").append(URLEncoder.encode(name, "utf-8"))
- .append("&password=").append(password);
- URL url=new URL(sb.toString());//
- HttpURLConnection conn=(HttpURLConnection)url.openConnection();
- conn.setReadTimeout(5000);//读取权限5秒,否则断开
- conn.setConnectTimeout(5000);//连接时间5秒,否则断开
- conn.setRequestMethod("GET");//
- if(conn.getResponseCode()!=200){
- Toast.makeText(MainActivity.this, "连接服务端失败", 2000).show();
- return ;
- }
- ObjectMapper om=new ObjectMapper();
- User user = om.readValue(conn.getInputStream(), User.class);
- Log.i("main",user.toString());
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- };
- }.start();
- }
- });
- }
- private void initView() {
- metName=(EditText) findViewById(R.id.etName);
- metPwd=(EditText) findViewById(R.id.etPassword);
- }
- }
客户端项目描述文件:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.sxt.day06_03"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="8"
- android:targetSdkVersion="18" />
- <uses-permission android:name="android.permission.INTERNET"/> 安卓想访问网络要申请网络权限
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name="com.sxt.day06_03.MainActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- </manifest>
android 38 Abdroid客户端和服务端交互的更多相关文章
- Android客户端与服务端交互之登陆示例
Android客户端与服务端交互之登陆示例 今天了解了一下android客户端与服务端是怎样交互的,发现其实跟web有点类似吧,然后网上找了大神的登陆示例,是基于IntentService的 1.后台 ...
- java客户端与服务端交互通用处理 框架解析
一.综述 java 客户端与服务端交互过程中,采用NIO通讯是异步的,客户端基本采用同一处理范式,来进行同异步的调用处理. 处理模型有以下几个要素: 1. NIO发送消息后返回的Future 2. 每 ...
- c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP 入门级客户端与服务端交互代码 网 ...
- Fresco 源码分析(二) Fresco客户端与服务端交互(3) 前后台打通
4.2.1.2.4 PipelineDraweeControllerBuilder.obtainController()源码分析 续 上节中我们提到两个核心的步骤 obtainDataSourceSu ...
- Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题
4.2 Fresco客户端与服务端的交互(一) 解决Q1问题 从这篇博客开始,我们开始讨论客户端与服务端是如何交互的,这个交互的入口,我们从Q1问题入手(博客按照这样的问题入手,是因为当时我也是从这里 ...
- UDP网络程序,客户端和服务端交互原理
创建一个udp客户端程序的流程是简单,具体步骤如下: 创建客户端套接字 发送/接收数据 关闭套接字 UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实 ...
- spring-oauth-server实践:使用授权方式四:client_credentials 模式的客户端和服务端交互
spring-oauth-server入门(1-11)使用授权方式四:client_credentials 模式的客戶端 一.客户端逻辑 1.界面入口(credentials_access_token ...
- Fresco 源码分析(二) Fresco客户端与服务端交互(2) Fresco.initializeDrawee()分析 续
4.2.1.2 Fresco.initializeDrawee()的过程 续 继续上篇博客的分析Fresco.initializeDrawee() sDraweeControllerBuilderSu ...
- IOS开发系列之阿堂教程:玩转IPhone客户端和Web服务端交互(客户端)实践
说到ios的应用开发,我们不能不提到web server服务端,如果没有服务端的支持,ios应用开发就没有多大意义了,因为从事过手机开发的朋友都知道(Android也一样),大量复杂业务的处理和数据库 ...
随机推荐
- Uninstall office15 click-to-run extensibility Component
Summary : Uninstall office15 click-to-run extensibility Component,How to resolve Uninstall office15 ...
- PM【terminal】
More Knowledge More Performance More Time 资料模组化 以知识管理为基础的项目管理 规范:ethic
- python调用java
这么个标题多少有点蛋疼的感觉,两个都是互联网时代的语言,学习成本和执行效率也差不多,之所以会产生这种需求,多半是想在python中引用java的类,例如安卓和hadoop的生态圈,基本是java代码的 ...
- Test for open live write
this is test document. this is test document. this is test document. this is test document. this is ...
- JDK的帮助文档
1.JDK1.8在线api,英文版 https://docs.oracle.com/javase/8/docs/api/
- 【关于php】Appserv中关于DW配置站点问题
用DW运行的话,还要配置下站点.或者你直接在浏览器地址栏上输入:http://localhost:8080/p5-1.php 或者是http://localhost/p5-1.php dreamwe ...
- vim自动补全
Vim 中使用 OmniComplete 为 C/C++ 自动补全 OmniComplete 并不是插件的名字,而是 Vim 众多补全方式中的一种(全能补全).说白了 OmniComplete 其实就 ...
- Jsp中获得集合List或Set的长度
首先要引入<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> ...
- 安装drupal练习网站遇到的问题
1 Skip #conjunction key in __clone() method of core/includes/database/query.inc 解决方案:https://www.dru ...
- .rdp 文件参数详解
Overview of .rdp file settings Setting Type Default value Description and possible values Settable f ...