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客户端发送数据的更多相关文章

  1. android socket 通讯(客户端) 发送数据

    /** ClientSocket通讯类 **/  public class ClientSocket  {     /**服务器地址*/     private String serverUrl=&q ...

  2. 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)

    原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图. ...

  3. Android笔记:Socket客户端收发数据

    client.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and ...

  4. server-sent-event使用流信息向客户端发送数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. C#模拟客户端发送数据示例

      在给一些客户端做服务器端支持时,发现他们提交上来的数据大都不是http请求格式,因而使用Request.Form获取不到内容,今天用C#做下模拟,并演示下数据接收. 1.发送文本 1).客户端发送 ...

  6. SSH服务器与Android通信(2)--Android客户端接收数据

    基本原理是Android客户端通过HttpClient向服务器发出请求,服务器向Android客户端返回JSON字符串,Android客户端解析JSON字符串获得数据. 1. 新建一个Android项 ...

  7. Android udp json+数组 --->bytes发送数据

    Android  json支持五种数据类型 String / int(float)/bool / null  / object 今天说 object  : json = new JSONObject( ...

  8. TCP实现多个客户端发送数据给服务器端

    SocketThread给服务端用的线程类: public class SocketThread extends Thread{ private Socket socket; public Socke ...

  9. nodejs中http服务器,如何使用GET,POST请求发送数据、npm、以及一些插件的介绍

    浏览器给服务器传递参数,最常用的是地址栏传参(get),以及表单提交(post) 先说get传参,就是在url后跟上?key=value&key2=value2...... 但是按照前几篇的h ...

随机推荐

  1. 案例研究:CopyToAsync

    返回该系列目录<基于Task的异步模式--全面介绍> 把一个流拷贝到另一个流是有用且常见的操作.Stream.CopyTo 方法在.Net 4中就已经加入来满足要求这个功能的场景,例如在一 ...

  2. Linux之VSFTP服务

    一 .文件服务器简介 ftp:在内网和公网使用. 服务器:windows,linux 客户端:windows,linux samba:只能在内网使用(文件共享服务) 服务器:windows,linux ...

  3. 如何正确选择UI自动化测试

    近年流行一个词-UI,和UI搭边好像都那么高大上,软件测试行业也不例外,比如UI自动化测试. 常见的UI自动化测试程序有哪些呢? l  带UI的Unit Test,比如mock掉底层代码,仅仅测试UI ...

  4. KnockoutJS 3.X API 第四章 数据绑定(4) 控制流with绑定

    with绑定的目的 使用with绑定的格式为data-bind="with:attribute",使用with绑定会将其后所跟的属性看作一个新的上下文进行绑定.with绑定内部的所 ...

  5. HTTP学习四:SPDY和HTTP/2.0

    1 HTTP1.0/1.1与HTTPS的不足 1.1 HTTP1.0/1.1不足 单路连接 HTTP 协议的最大弊端就是每个 TCP 连接只能对应一个 HTTP 请求,即每个 HTTP 连接只请求一个 ...

  6. Oracle 11g系列:数据表对象

    Oracle数据库的下一层逻辑结构并非数据表,而是表空间.每个数据表都属于唯一的表空间. 1.Oracle表空间 与数据表相同,Oracle表空间是一个逻辑对象,而非物理对象,是数据库的组成部分.当使 ...

  7. KlayGE 4.4中渲染的改进(四):SSSSS

    转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2774 本系列的上一篇提到了KlayGE 4.4将会出现的高质量地形渲染.本篇仍讲一个新功能, ...

  8. 文本溢出text-overflow和文本阴影text-shadow

    前面的话 CSS3新增了一些关于文本的样式,其中text-overflow文本溢出和text-shadow文本阴影有些特别.因为它们有对应的overflow溢出属性和box-shadow盒子阴影属性. ...

  9. java中Object.equals()简单用法

    /* equals()方法默认的比较两个对象的引用! */ class Child { int num; public Child(int x){ num = x; } //人文的抛出运行时异常的好处 ...

  10. Datatables 在asp.net mvc中的使用

    前言 最近使用ABP(ASP.NET Boilerplate)做新项目,以前都是自己扩展一个HtmlHelper来完成同步/异步分页,但是有个地方一直不满意,排序太费劲. 以前接触过一点点的Datat ...