SSH服务器与Android通信(3)--Android客户端发送数据
Android客户端向SSH服务器发送数据主要有三种情况:通过客户端删除数据、添加数据和修改数据。
1.删除数据
先看看jsp文件里面是怎样删除数据的:
<td align="center"><a href="clasdelete.action?id=<s:property value='#st.id'/>" onclick="if(!window.confirm('是否删除'))return false;" >删除</a>
也就是说,只要向服务器发出一个HTTP请求,包含clasdelete.action?id=(要删除的记录id),就可以实现记录的删除。因此,首先通过点击按钮事件获得要删除的记录的ID,然后再启动一个线程向服务器发出HTTP请求即可。
// 点击删除按钮
my_item.btnDel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Var.id = my_item.txtNum.getText().toString();
Var.type = 2;
Var.delThread = new CommThread();
Var.delThread.start();
}
});
删除数据的功能和向服务器请求数据的功能可以在一个线程类里面实现,因为它们除了请求的URL不同,其他的操作基本上都是一样的。
// 删除数据
else if (Var.type == 2){
Var.strAct ="clasdelete.action?id=" + Var.id;
Var.strURL = Var.strHost + Var.strAct;
resIS = getIS(Var.strURL);
}
2.添加数据
先看看在jsp文件里面是如何实现添加数据的:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>添加课程</title>
</head>
<body>
<center>
<s:form action="clas" method="post" >
<tr>
<td colspan="2" align="center">
<h1><s:text name="欢迎添加课程"/></h1><br/>
<s:property value="exception.message"/>
</td>
</tr>
<s:textfield name="clas.name" key="课程名称"
tooltip="Enter class name!" required="true"></s:textfield>
<s:textfield name="clas.comment" key="课程介绍"
tooltip="Enter the comment!" required="true"></s:textfield>
<s:submit value="提交"/>
<s:set/>
</s:form>
</center>
</body>
</html>
也就是说,只要向服务器提交clas.name、clas.comment两个变量的值就可以了。在Android客户端,只能通过NameValuePair[]数组向服务器提交变量的值。新建一个线程类,把变量的名称和值放进NameValuePair[]数组,再向服务器提交就可以了。
public void add(){
Var.strAct = "clas";
Var.strURL = Var.strHost + Var.strAct;
Log.i("PostThread:", Var.strURL);
// 建立HTTPPost连接
HttpPost httpRequest = new HttpPost(Var.strURL);
// 变量用NameValuePair[]数组储存
List <NameValuePair> params = new ArrayList <NameValuePair>();
params.add(new BasicNameValuePair("clas.name", AddActivity.txtName));
params.add(new BasicNameValuePair("clas.comment", AddActivity.txtComm));
try{
// 发出HTTPRequest
httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
// 取得HTTPResponse
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
// 状态码为200表明成功
if(httpResponse.getStatusLine().getStatusCode() == 200)
{
sendMessage(Var.msg_add, "");
}
else{
sendMessage(Var.msg_error,httpResponse.getStatusLine().toString());
}
}
// 出错处理
catch (ClientProtocolException e){
e.printStackTrace();
sendMessage(Var.msg_error, e.toString());
}
catch (IOException e){
e.printStackTrace();
sendMessage(Var.msg_error,e.toString());
}
catch (Exception e){
e.printStackTrace();
sendMessage(Var.msg_error,e.toString());
}
}
3.修改数据
修改数据和删除数据类似,也是把变量名称和值放进NameValuePair[]数组,再向服务器提交就可以了。
// 修改数据
public void update(){ Var.strAct = "clasupdate";
Var.strURL = Var.strHost + Var.strAct;
Log.i("PostThread:", Var.strURL);
// 建立HTTPPost连接
HttpPost httpRequest = new HttpPost(Var.strURL);
// Post变量用NameValuePair[]数组储存
List <NameValuePair> params = new ArrayList <NameValuePair>();
params.add(new BasicNameValuePair("clas.id", UpdateActivity.txtID));
params.add(new BasicNameValuePair("clas.name", UpdateActivity.txtName));
params.add(new BasicNameValuePair("clas.comment", UpdateActivity.txtComm));
try{
// 发出HTTPRequest
httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
// 取得HTTPResponse
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
// 状态码为200表明成功
if(httpResponse.getStatusLine().getStatusCode() == 200)
{
sendMessage(Var.msg_update, "");
}
else{
sendMessage(Var.msg_error,httpResponse.getStatusLine().toString());
}
}
// 出错处理
catch (ClientProtocolException e){
e.printStackTrace();
sendMessage(Var.msg_error, e.toString());
}
catch (IOException e){
e.printStackTrace();
sendMessage(Var.msg_error,e.toString());
}
catch (Exception e){
e.printStackTrace();
sendMessage(Var.msg_error,e.toString());
} }
SSH服务器与Android通信(3)--Android客户端发送数据的更多相关文章
- android socket 通讯(客户端) 发送数据
/** ClientSocket通讯类 **/ public class ClientSocket { /**服务器地址*/ private String serverUrl=&q ...
- 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图. ...
- Android笔记:Socket客户端收发数据
client.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and ...
- server-sent-event使用流信息向客户端发送数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C#模拟客户端发送数据示例
在给一些客户端做服务器端支持时,发现他们提交上来的数据大都不是http请求格式,因而使用Request.Form获取不到内容,今天用C#做下模拟,并演示下数据接收. 1.发送文本 1).客户端发送 ...
- SSH服务器与Android通信(2)--Android客户端接收数据
基本原理是Android客户端通过HttpClient向服务器发出请求,服务器向Android客户端返回JSON字符串,Android客户端解析JSON字符串获得数据. 1. 新建一个Android项 ...
- Android udp json+数组 --->bytes发送数据
Android json支持五种数据类型 String / int(float)/bool / null / object 今天说 object : json = new JSONObject( ...
- TCP实现多个客户端发送数据给服务器端
SocketThread给服务端用的线程类: public class SocketThread extends Thread{ private Socket socket; public Socke ...
- nodejs中http服务器,如何使用GET,POST请求发送数据、npm、以及一些插件的介绍
浏览器给服务器传递参数,最常用的是地址栏传参(get),以及表单提交(post) 先说get传参,就是在url后跟上?key=value&key2=value2...... 但是按照前几篇的h ...
随机推荐
- CGLib与JDKProxy的区别
Spring AOP 的实现主要有两种:CGLib与JDK自带的Proxy. 他们主要的区别是,需要JDKProxy修改的类必须实现接口(因此也只能代理public方法),在创建Proxy时可以使用c ...
- vs2013中的“任务列表”菜单
以前在java项目中经常用到todo. 现在vs2013也完美支持了. 首先,对于目前不确定而尚需完善的代码,在前面加 //TODO:by who --注释文字,比如: //TODO:lhl--类目I ...
- Js~动态判断PC和手机浏览器
这个只是一个小知识,也是在网上找的,挺好用! 动态判断浏览器是PC还是移动端! <script> var browser={ versions:function(){ var u = na ...
- 每天一个linux命令(61):vi命令 /企业常用的linux命令清单
vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是一般模式.编辑模式与指令列命令模式. 这三种模式的作用分别是: 一般模式:以 vi 打开一个档案就直接进入一般模式了(这是默认的模式) ...
- Java基础-继承 利用接口做参数,写个计算器,能完成+-*/运算
38.利用接口做参数,写个计算器,能完成+-*/运算 (1)定义一个接口Compute含有一个方法int computer(int n,int m); (2)设计四个类分别实现此接口,完成+-*/运算 ...
- chrome开发总结(交互/权限/存储)-爬虫
chrome开发总结(交互/权限/存储)-爬虫 [TOC] 标签(空格分隔): 杂乱之地 经过一翻折腾.还是选择了chrome来做爬虫.主要是为了解决一些ajax加载的问题以及代理的问题. 1.chr ...
- Mysql存储过程语法
一口气弄完了! 一.条件语句if-then-else: create procedure demo_1(in param int) begin declare var int; ; then inse ...
- 转载----How fast is Redis?
How fast is Redis? Redis includes the redis-benchmark utility that simulates running commands done b ...
- 使用Html5+C#+微信 开发移动端游戏详细教程: (四)游戏中层的概念与设计
众所周知,网站的前端页面结构一般是由div组成,父div包涵子div,子div包涵各种标签和项, 同理,游戏中我们也将若干游戏模块拆分成层,在后续的代码维护和游戏程序逻辑中将更加清晰和便于控制. We ...
- ShineTime - 带有 CSS3 闪亮特效的缩略图相册
ShineTime 是一个效果非常精致的缩略图相册,鼠标悬停到缩略图的时候有很炫的闪光效果,基于 CSS3 实现,另外缩略图也会有立体移动的效果.特别适用于个人摄影作品,公司产品展示等用途,快来来围观 ...