服务端接收客服端数据,通过http协议
之前的两个例子都是客服端解析服务端的数据,然而在实际应用中,客服端发送数据给服务端也是一个很重要的方面。比如客服端输入用户名和密码后,要给服务端接收,最后在数据库里面去查找看是否有这个用户
本文以get方式发送数据给服务端
服务器端
就是一个Servlet
package com.lin.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /* * 1、get方式提交请求参数,没有对中文参数编码 * tomcat默认iso8859编码,转成二进制数据 */ public class ManageServlet extends HttpServlet { private static final long serialVersionUID = 1L; public ManageServlet() { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String title= request.getParameter("title"); String timelength= request.getParameter("length"); /* * 保存到数据库中 */ System.out.println("视频"+title); System.out.println("时长"+timelength); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
在浏览器里输入:http://localhost:8080/videonews/ManageServlet?title=woshizhu&length=23
Servlet会打印
视频woshizhu
时长23
那么,如何在android客服端完成这个效果呢
也就是说,如何在手机上自己输入两项参数,然后手机的数据就会被Servlet接收呢?
好,我们新建一个android工程
layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/title" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/title"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/timelength" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/timelength"
android:numeric="integer"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="@string/button"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/title" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/title"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/timelength" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/timelength"
android:numeric="integer"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="@string/button"
/>
</LinearLayout>
Activity
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.SimpleAdapter; import android.widget.Toast; import com.lin.servce.NewsService; public class NewsmanageActivity extends Activity { /** Called when the activity is first created. */ public EditText etitle; public EditText etimelength; public Button button; boolean result; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub new Thread(new Runnable() { public void run() { // TODO Auto-generated method stub String title=etitle.getText().toString(); String length=etimelength.getText().toString(); result=NewsService.save(title,length); Message msg = new Message(); msg.what = 1; handler.sendMessage(msg); } }){}.start(); } }); } Handler handler=new Handler(){ public void handleMessage(Message msg) { if (msg.what == 1) { if(result){ Toast.makeText(getApplicationContext(), R.string.success, 2).show(); }else{ Toast.makeText(getApplicationContext(), R.string.error, 2).show(); } } }; }; private void init() { // TODO Auto-generated method stub etitle=(EditText) findViewById(R.id.title); etimelength=(EditText) findViewById(R.id.timelength); button=(Button) findViewById(R.id.button); } }
save方法两个参数为title和length
package com.lin.servce; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; public class NewsService { //通过http把数据发到web应用里,服务器对路径长度的限制get post public static boolean save(String title, String length) { String path="http://192.168.189.1:8080/videonews/ManageServlet"; Map<String,String> params=new HashMap<String,String>(); params.put("title", title); params.put("length", length); //保存到map集合 try { return sendGETRequest(path,params,"UTF-8"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } //得到路径 private static boolean sendGETRequest(String path, Map<String, String> params, String encoding)throws Exception { // TODO Auto-generated method stub StringBuilder builder=new StringBuilder(path); builder.append('?'); for(Map.Entry<String, String> entry: params.entrySet()){ builder.append(entry.getKey()).append("="); builder.append(URLEncoder.encode(entry.getValue(),encoding)); builder.append("&");//多个这个没有影响 } builder.deleteCharAt(builder.length()-1);//最后一个字符的索引 System.out.println("url"+builder); HttpURLConnection conn=(HttpURLConnection) new URL(builder.toString()).openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET");//一定要大写 if(conn.getResponseCode()==200){ return true; } return false; } }
相关推荐
《getdata:数据提取在土木工程中的应用与实践》 在现代的土木工程领域,数据的收集、处理和分析已经成为不可或缺的一部分。getdata,作为一个强大的数据提取工具,为工科专业人士提供了高效便捷的数据处理解决方案...
标题 "Winget 离线安装包 LTSC Server Winget" 提供的信息表明,这是一个专门为Windows LTSC(Long-Term Servicing Channel)服务器版本设计的Winget(Windows Package Manager)离线安装包。Winget是微软推出的一个...
"利用getdata获取图形数据"这一主题涉及到一个名为getdata的软件工具,它专门用于从各种图形文件中提取数据点,使用户能够对这些数据进行进一步处理或分析。下面将详细介绍getdata软件及其使用方法。 getdata是一款...
"Ajax中Get和Post请求的区别" Ajax作为异步JavaScript和XML的简写,是一种创建交互式网页的技术。其中,Get和Post是两种常用的HTTP请求方法,尽管它们都是用于将数据从客户端发送到服务器端,但是它们之间存在着很...
《深入解析getaddrinfo.c:C语言在Linux DNS解析中的应用》 在计算机网络编程中,DNS(Domain Name System)是互联网的一项基础服务,它负责将人类可读的域名转换为IP地址。在Linux系统中,`getaddrinfo()`函数是...
### Debian apt-get 使用指南 #### 一、简介与基本概念 `apt-get` 是 Debian 及其衍生系统(如 Ubuntu)中的一个强大的包管理工具,它可以帮助用户安装、升级、卸载软件包,并且能够自动解决依赖关系。本文将详细...
【GetData安装软件及使用教程】 GetData是一款强大的图形数据提取工具,尤其在科研和工程领域中广泛应用。当你遇到只有二维曲线图而缺乏具体点数据的情况时,GetData可以帮助你从图像中恢复或提取这些丢失的数据点...
在Java编程中,HTTP POST和GET是两种基本的HTTP请求方法,用于客户端向服务器发送数据。为了在Java中实现这些功能,我们需要引入特定的库,这些库通常被打包成JAR(Java Archive)文件。本篇文章将详细讲解HTTP POST...
在网络安全和渗透测试领域,"getshell"是一个常见的术语,指的是获取远程服务器的命令执行权限,从而能够控制或访问目标系统。在这个“getshell工具使用教程”中,我们将深入探讨如何利用特定的工具来实现这一目标。...
GetData Graph Digitizer是一款强大的图形化坐标读取工具,专门用于从数据曲线和散点图中精确提取原始数据点。这款软件对于科学家、工程师以及任何需要从图表中获取精确数值的人来说非常有用。它允许用户轻松地从...
### AJAX POST 与 GET 提交的区别详解 #### 一、GET与POST基本概念及应用场景 在探讨AJAX中GET和POST的区别之前,我们先来了解一下这两种请求方式的基本概念。 **GET**请求通常用于获取资源信息,它将参数拼接到...
在线PostGet本地版是一款专为开发者设计的工具,它提供了与在线PostGet服务相同的功能,但可以在本地运行,便于开发者进行API测试、数据交互以及调试。这个应用简化了HTTP请求的发送过程,使得用户能够在自己的...
### 西门子S7-1200的PUT/GET操作详解 #### 一、概述 西门子S7-1200系列PLC(Programmable Logic Controller,可编程逻辑控制器)广泛应用于工业自动化领域。PUT/GET操作是一种用于在两个或多个PLC之间传输数据的...
《getdata软件安装指南与应用解析》 在数字化时代,数据的重要性不言而喻,而高效的数据处理工具更是不可或缺。本文将围绕“getdata”这一软件进行深入探讨,旨在帮助用户了解getdata的安装过程,并解析其核心功能...
Function uLong Gethost(ref string hostname) Library "GetIP60.dll" ALIAS FOR "Gethost;ansi" 调用方法 string ls_Host = space(256) int result result = Gethost(ls_Host) if result =0 then sle_1.text=...
《getdata:高效的数据提取工具》 在信息技术领域,数据的获取与处理是科研和工程实践中不可或缺的一环。本文将详细介绍“getdata”这一强大的数据提取软件,它为用户提供了便利的方式来获取图像中的坐标信息,使得...
首先,从原理上看,GET方法通常用于获取资源信息,它通过URL来传递参数,URL全称为资源描述符,表示网络上的一个资源。GET请求被认为是安全的和幂等的。安全意味着它不会改变服务器上的数据,幂等则表示多次执行同一...
《GetData图形数字化仪:高效获取图像数据的利器》 在当今的科技时代,数据分析与处理已经成为科研、工程和商业领域不可或缺的一部分。面对大量的图形数据,如何有效地从中提取所需信息成为了一个亟待解决的问题。...
在VC++中,可以使用WinInet库来实现GET请求。首先,包含必要的头文件`#include <wininet.h>`,然后使用`InternetOpen()`, `InternetConnect()`, `HttpOpenRequest()`, `HttpSendRequest()`等函数创建连接并发送请求...
本例程着重探讨了S7-1500CPU之间利用PUT和GET指令进行通信的方法。PUT和GET是SIMATIC PLC之间进行数据交换的常用命令,它们允许不同PLC之间高效地传输数据,以实现系统间的协同工作。 PUT指令用于将本地CPU的数据...