`

Android客户端与服务端交互-客户端GET方式登录和客户端POST方式查询

阅读更多

 

这是一个简单实现了Android客户端与服务端交互-客户端GET方式登录和客户端POST方式查询的一个小案例

 

 

 

 

package com.jxust.day06_03_httpurlconnectiondemo;

import java.io.IOException;

public class MainActivity extends Activity {

	// 不能写localhost而应该写模拟机的地址10.0.2.2,如果是真机,那么就要写真机的地址
	// 访问的网络地址
	private static final String PATH = "http://10.0.2.2:8080/Day06_Servlet/Login_Servlet";

	EditText metName, metPassword;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
		setListener();
	}

	private void setListener() {
		setLoginOnClickListener();
		setQueryOnClickListener();
	}

	private void setQueryOnClickListener() {
		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.setDoOutput(true); // doGet中是不需要设置的,但是doPost是需要设置的
							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 e1) {
							e1.printStackTrace();
						} // 将类型转换成utf-8的格式
						catch (IOException e2) {
							e2.printStackTrace();
						}
					}
				}.start();
			}
		});
	}

	private void setLoginOnClickListener() {
		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 = metPassword.getText().toString();
						StringBuilder sb = new StringBuilder(PATH);
						sb.append("?name=").append(name).append("&password=").append(password);
						try {
							URL url = new URL(sb.toString());
							HttpURLConnection conn = (HttpURLConnection) url.openConnection();
							conn.setReadTimeout(5000); // 读取服务端的时间为5秒钟,如果超过时间就断开服务端连接
							conn.setConnectTimeout(5000);
							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); // 按User这个类型来解析
							Log.i("main", user.toString());
						} catch (MalformedURLException e1) {
							e1.printStackTrace();
						} catch (IOException e2) {
							e2.printStackTrace();
						}
					}
				}.start();
			}
		});
	}

	private void initView() {
		metName = (EditText) findViewById(R.id.etName);
		metPassword = (EditText) findViewById(R.id.etPassword);

	}
}

 

 

 

<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>

 

 

 

package com.jxust.day06.entity;

import java.io.Serializable;

public class User implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String name;
	private char sex;
	private int age;
	private double height;
	private String password;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public char getSex() {
		return sex;
	}
	public void setSex(char sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public double getHeight() {
		return height;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public User() {
		// TODO Auto-generated constructor stub
	}
	public User(String name, char sex, int age, double height, String password) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.height = height;
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [name=" + name + ", sex=" + sex + ", age=" + age
				+ ", height=" + height + ", password=" + password + "]";
	}
	
}

 

 

分享到:
评论

相关推荐

    057集-Android客户端与服务端交互-服务端代码

    在本节"057集-Android客户端与服务端交互-服务端代码"的视频教程中,我们将深入探讨Android应用程序如何与服务端进行有效且安全的通信,这对于开发任何涉及网络功能的Android应用来说都是至关重要的。这个教程针对的...

    058集-Android客户端与服务端交互-客户端GET方式登录

    本教程“058集-Android客户端与服务端交互-客户端GET方式登录”主要讲解了如何通过HTTP GET方法进行用户登录操作,这是许多移动应用的基础功能。下面将详细阐述这一过程中的关键知识点。 1. HTTP GET请求: ...

    059集-Android客户端与服务端交互-客户端POST方式查询

    本集教程聚焦于Android客户端使用POST方式与服务端进行数据查询,这是一项至关重要的技能,因为POST请求在提交复杂数据、执行增删改查操作时比GET请求更为常见。 首先,我们要了解HTTP协议中的两种主要请求方法:...

    客户端与服务端的交互实现(AndroidStudio+JavaEE开发)

    在本文中,我们将深入探讨...通过以上步骤,我们可以构建出一个完整的客户端与服务端交互的应用,实现用户注册、登录及数据管理的功能。在实际开发中,还需要考虑性能优化、用户体验提升以及后续的维护和更新等问题。

    安卓客户端与服务端交互源代码(包括安卓端和web端)

    在IT行业中,客户端和服务端交互是应用程序开发的核心部分,特别是在移动应用开发中,如安卓客户端。这个主题涉及到了客户端(Android应用)如何通过网络通信与服务端(通常为Web服务器)进行数据交换,以实现功能如...

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

    本示例探讨了如何实现Android客户端与基于Struts、Hibernate和Spring的后台服务器之间的数据交互,使用JSON作为数据传输格式。对于初学者来说,这是一个很好的起点,因为它涵盖了多个关键的技术栈。 首先,让我们...

    Android高级应用源码-客户端与服务端的json交互的小例子.rar

    本资源"Android高级应用源码-客户端与服务端的json交互的小例子"提供了一个具体的示例,帮助开发者理解和实践Android应用如何通过JSON进行数据通信。 1. JSON基础知识: JSON(JavaScript Object Notation)是一种...

    android客户端+服务端

    在Android应用开发中,"客户端+服务端"的架构模式是常见的设计方式,它涉及到Android客户端与远程服务器之间的数据通信和交互。这种模式允许应用程序在本地执行用户界面操作,同时利用服务器的计算能力和存储资源来...

    Android客户端与服务端交互

    本文和大家一起了解了一下android客户端与服务端是怎样交互的,具体内容如下 1.后台使用简单的servlet,支持GET或POST。这个servlet最终返回给前台一个字符串flag,值是true或false,表示登录是否成功。 servlet...

    Android客户端与服务端的JSON交互数据的实现

    在Android应用开发中,客户端和服务端之间的数据交互是不可或缺的一部分,JSON作为一种轻量级的数据交换格式,被广泛用于Android和服务器之间的通信。本教程将详细阐述如何在Android客户端与服务端实现JSON数据的...

    IOS 客户端与服务端之间数据交互框架

    在iOS开发中,客户端和服务端之间的数据交互是应用程序的核心部分,它使得用户界面可以动态更新,功能得以实现。本文将详细探讨iOS客户端与服务端之间的数据交互框架,并介绍相关的文件操作类库。 首先,让我们关注...

    android客户端向服务端上传数据 post和get两种方式

    综上所述,Android客户端可以通过GET和POST请求与服务端进行数据交互,其中POST请求更适合上传数据,包括XML文档和文件。`HttpURLConnection`是原生支持的库,而`OkHttp`等第三方库提供了更高级的功能和更好的性能。...

    android客户端实现与服务器交互的用户登录功能

    在Android客户端实现与服务器交互的用户登录功能是一个基础但至关重要的任务,这涉及到客户端与服务端的通信协议、数据格式的处理以及用户认证的安全性。在这个过程中,Android应用需要发送登录请求到JavaWebServlet...

    struts2+Mysql搭建的服务端 +android 客户端 post,get请求

    总结起来,"struts2+Mysql搭建的服务端 +android 客户端 post,get请求"这个项目涵盖了Web服务开发的多个关键方面:服务端架构设计、数据库管理和客户端网络通信。了解并熟练掌握这些技术,对于构建高效、安全的移动...

    android客户端与servlet服务端交互的很好的例子

    通过学习这个示例,开发者可以掌握Android客户端与Servlet服务端交互的基本技术,从而能够构建功能丰富的网络应用。实际开发时,应根据项目需求选择最适合的通信方式和库。同时,注意保持代码的可维护性和性能优化。

Global site tag (gtag.js) - Google Analytics