`

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 + "]";
	}
	
}

 

 

分享到:
评论

相关推荐

    Android客户端与服务端交互

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

    封装一个类搞定90%安卓客户端与服务器端交互

    本实例封装了一个处理安卓客户端与服务器端交互的几个方法,对于中文乱码问题本实例也找到了解决方案.本例可以处理的场景如下: 1.与服务器端交互json数据. 2.Get方式与服务器端交互数据. 3.Post方式与服务器端交互...

    SSM整合 完美支持RESTful(Jsp和客户端 android ios ).docx

    RESTful是一种网络应用程序的设计风格和开发方式 它结构清晰 符合标准 易于理解 扩展方便 REST 即Representational State Transfer的缩写 这个词组可以翻译成 表现层状态转化 通过URI定位资源(图片 文字 视频等等) ...

    Android应用源码广东海洋大学图书馆安卓客户端项目源码

    本项目是一个广东海洋大学图书馆的安卓客户端项目源码,可以获取网站(http://210.38.138.1:81/)上的图书信息,直接通过get/post模拟浏览器与网站交互,非json或webview方式,获取到返回html字符串再去取里面的元素...

    Android应用源码广东海洋大学图书馆安卓客户端项目源码.zip

    本项目是一个广东海洋大学图书馆的安卓客户端项目源码,可以获取网站上的图书信息,直接通过get/post模拟浏览器与网站交互,非json或webview方式,获取到返回html字符串再去取里面的元素,本项目的服务端是asp.net写...

    Android应用源码广东海洋大学图书馆安卓客户端项目

    本项目是一个广东海洋大学图书馆的安卓客户端项目源码,可以获取网站(http://210.38.138.1:81/)上的图书信息,直接通过get/post模拟浏览器与网站交互,非json或webview方式,获取到返回html字符串再去取里面的元素...

    AngularJS使用$http配置对象方式与服务端交互方法

    //method属性表示HTTP请求时的方式,它是一个字符串,值是POST、GET、JSONP、DELETE、PUT和HEAD其中之一 method: //url表示向服务器请求的地址,是一个相对或者绝对的字符串形式 url: //data属性是一个对象,该...

    Silverlight2.0功能展示Demo源码

    Silverlight 2.0 详解WebRequest和WebResponse,对指定的URI做GET和POST请求,以及接收其响应。 HttpWebRequest - 对指定的 URI 发出请求 Create() - 初始化一个 WebRequest BeginGetResponse() - 开始对指定 URI ...

    基于Java实现的Web服务器与测试工具开发.zip

    资源包含文件:设计报告word+服务端客户端源码 基于Java编程语言,利用http socket通信技术,写一个小型的web服务器与一个爬虫的测试工具,来对比分析所写的服务器获取到的页面源码与从tomcat获取的相似度。 (1)...

    关于前台调用后台事件__doPostBack函数

    这里需要提一下的是,asp.net编程提供了服务端控件和客户端控件的说法,其实还是脱离不了HTML的本质,客户端和服务端需要交互必须要提交,提交有两种方式get和post,get就是通过向服务端发送连接地址,服务端通过地址...

    简单谈谈axios中的get,post方法

    学习vue和nodejs的过程当中,涉及到了axios,今天为了测试,写了get和post两个方法来跟node服务端交互,结果因为header和参数弄了好久,在此记录一下,同时分享; 由于刚接触axios,在测试方法中,写的都是很简单的...

    12306火车票网站自动登录工具源码

    12306火车票网站自动登录工具源码 程序介绍: Web的原理就是,浏览器发送一个Request给Web服务器,Web服务器处理完这个请求之后发送一 ... 如果我们用自己写的程序来...7 客户端发送给服务端的数据进行UrlEncode处理

    网络传输协议(http协议)

    概述:指服务器和客户端间进行通信时的约束和规范,客户端与服务端的数据交互并不是杂乱无章的,需要遵照(基于)一定的规范进行 常见的协议: a) HTTP、HTTPS 超文本传输协议 b) FTP 文件传输协议 c) SMTP 简单...

    广东海洋大学图书馆安卓源码.zip

    直接通过get/post模拟浏览器与网站交互,非json或webview方式,获取到返回html字符串再去取里面的元素,本项目的服务端是asp.net写的实现了图书系统的登录查询等,在做与asp.net网站交互的朋友可以看一下,登录部分...

    基于PySide6框架+python的智能充电桩调度计费系统前端源码+项目说明文档.zip

    API 模块除 api_post 与 api_get 的函数与 开放 API 文档 内的接口一一对应,需要调用 api_post 与 api_get 对服务端发起请求。 这些函数不需要捕获 ApiError 异常,对异常的捕获应该发生在 API 模块的调用者处,以...

    vue结合axios与后端进行ajax交互的方法

    页面异步发出get请求获取数据,提交表单异步post数据到服务端 客户端 客户端代码 代码解析: // 服务端请求地址 let url = 'http://local.php.com/index.php'; let vm = new Vue({ el: "#app", data: { list: ...

    Retrofit2Samples:Retrofit2 Samples 与 Nodejs 服务端接口

    Retrofit2Samples Retrofit2 Samples 与 Nodejs 服务端接口 网络上对 Retrofit2 的各种介绍文章...本篇文章不会对 Retrofit2 的用法进行过多介绍,重点在于介绍服务端接口的搭建以及 Retrofit2 与服务端的交互 一、服

Global site tag (gtag.js) - Google Analytics