一、系统介绍
Android系统发送请求到Web系统,Web系统可以是PHP语言、Python语言、java语言、ASP语言开发的,但是必须满足异构JVM的交换协议,可以是WebService请求、HTTP请求(普通表单请求和Restful格式的json请求)、Socket等请求。
二、系统源码
本例子以Android模拟登录发送数据到Web系统,Web系统采用JAVA语言中的Servlet
Android代码如下:
1)编写xml界面文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/username"/>
<EditText
android:id="@+id/userName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/password"/>
<EditText
android:id="@+id/passwd"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/ok"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/ok"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/cacel"/>
</LinearLayout>
2)编写JAVA注册事件
package cn.com.gaojs.demo;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import cn.com.gaojs.service.impl.NetWorkTools;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LoginActivity extends Activity {
public static final String url ="http://192.168.1.100:8080/AndroidWeb/servlet/PDAServlet";
private Button btn;
private EditText userName;
private EditText passwd;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
userName = (EditText) this.findViewById(R.id.userName);
passwd = (EditText) this.findViewById(R.id.passwd);
btn = (Button) this.findViewById(R.id.ok);
btn.setOnClickListener(new LoginOnClickListener());
}
private class LoginOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
String userName1 = userName.getText().toString();
String passwd1 = passwd.getText().toString();
Toast.makeText(LoginActivity.this, "Hello"+userName1+passwd1, 10).show();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("userName",userName1));
params.add(new BasicNameValuePair("passwd",passwd1));
params.add(new BasicNameValuePair("method","login"));
System.out.println("------begin call---NetWorkTools---");
NetWorkTools.test(params);
System.out.println("------end call---NetWorkTools---");
}
}
}
3) 封装http请求
package cn.com.gaojs.service.impl;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import cn.com.gaojs.demo.LoginActivity;
public class NetWorkTools {
public static void test(List<NameValuePair> params){
try {
System.out.println(params);
HttpPost post = new HttpPost(LoginActivity.url);
//params.add(new BasicNameValuePair("",""));
post.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
HttpResponse response = new DefaultHttpClient().execute(post);
String content = EntityUtils.toString(response.getEntity()).trim();
System.out.println(content);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Web端代码如下:
1)声明servlet
package cn.com.android.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PDAServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String method = request.getParameter("method");
String userName = request.getParameter("userName");
String passwd = request.getParameter("passwd");
System.out.println(method +",userName="+userName+",passwd="+passwd);
//此处代码是处理登录逻辑的
if("login".equalsIgnoreCase(method)){
//doLogin(request, response);
}else if ("XXXX".equalsIgnoreCase(method)){
//doXXXX(request, response);
}else if ("YYY".equalsIgnoreCase(method)){
//doYYY(request, response);
}
}
}
2)Web.xml配置请求路径
<servlet>
<servlet-name>PDAServlet</servlet-name>
<servlet-class>cn.com.android.servlet.PDAServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PDAServlet</servlet-name>
<url-pattern>/servlet/PDAServlet</url-pattern>
</servlet-mapping>
3)启动,验证
三、验证
相关推荐
综上所述,这个DEMO涵盖了Android应用与Web服务器交互的基本流程和技术点,包括网络请求、数据格式、权限管理、异步处理以及错误处理等,是学习和实践Android网络编程的好例子。通过深入研究和理解这个DEMO,开发者...
Web服务是一种通过互联网交换结构化信息的标准,允许不同系统间的互操作性。SOAP是一种基于XML的消息传递协议,用于在分布式环境中交换结构化的和类型化的信息。另一方面,REST(Representational State Transfer)...
这个“Android与html交互的demo”很可能是为了演示如何在Android应用中通过WebView组件与内嵌的HTML5页面进行数据交换和功能调用。下面将详细解释这一交互过程的关键技术点。 1. **WebView组件**: Android中的...
《Android图书管理系统精品demo系统》是一款专为Android平台设计的高效、便捷的图书管理软件示例,它将客户端和服务端完美结合,旨在帮助用户轻松实现图书的数字化管理和查阅。在这个系统中,用户不仅可以进行图书的...
WebRTC(Web Real-Time Communication)...总的来说,"webrtc android Demo"是Android开发者学习和实践WebRTC技术的重要资源,通过深入研究和实践,开发者可以掌握如何在Android应用中实现高质量的实时音视频通信功能。
SOAP是一种基于XML的协议,用于在不同系统间交换结构化和类型化的信息。Ksoap2简化了这个过程,使Android开发者可以方便地调用Web Service接口。 2. **添加Ksoap2依赖** 在项目中使用Ksoap2,首先需要将`ksoap2-...
Web Services是一种基于网络的、平台无关的交互方式,它允许不同系统之间进行数据交换和功能调用。在本DEMO中,我们将深入探讨服务端和客户端的实现,以"SpringWebServiceClient"和"SpringWebServiceServer"为例。 ...
- 针对Android系统的碎片化问题,需要确保所选WebSocket库兼容各种版本的Android系统。 - 考虑到网络环境的不稳定,应实现重连机制,当连接断开时尝试重新建立连接。 - 为了节省资源,可以在应用进入后台时关闭...
本示例“Android应用源码之http 演示Demo”将帮助我们深入理解如何在Android中实现HTTP请求。下面,我们将详细讨论其中涉及的关键知识点。 1. **HTTP基础**:HTTP(超文本传输协议)是一种无状态的应用层协议,用于...
WebRTC(Web Real-Time Communication)是一个开放源代码项目,由Google发起并维护,它提供了浏览器和其他应用程序进行实时通信(RTC)的能力,包括音频、视频和数据共享。这个技术基于Internet工程任务组(IETF)的...
6. 数据交换:通过JavaScriptInterface在Android和JavaScript之间交换数据,实现WebSocket通信的双向交互。 通过这个DEMO,开发者可以了解到如何在Android应用中集成WebSocket,以及如何在WebView加载的网页中利用...
在这个项目中,Android客户端(AndroidCLient)负责用户界面的展示,以及与后台服务器进行数据交换。开发者可能使用了Android SDK中的HttpURLConnection或OkHttp库来发起网络请求,发送GET或POST请求来获取或提交...
WebRTC(Web Real-Time Communication)是一项开放的网络技术,它允许网页浏览器进行实时通信(RTC),无需插件或额外的软件。在Android平台上,开发者可以利用WebRTC库创建丰富的音视频应用,包括视频会议、直播、...
Android WebRTC Demo是基于Chrome 64版本的WebRTC实现,专门为Android平台设计的一个示例应用。WebRTC(Web Real-Time Communication)是一项开源项目,旨在为网页浏览器和其他各种应用程序提供实时通信(RTC)的...
【Android Web Demo】是一个针对初学者设计的项目,旨在帮助他们入门Android平台上的Web开发。这个Demo涵盖了Android基础知识与Web技术的结合,让开发者能够理解如何在Android应用中嵌入和交互网页内容。 首先,...
在Android开发中,访问Web Servicedemo涉及到的关键技术是客户端如何与远程服务器进行交互,以获取或发送数据。Web Service通常是一种基于HTTP协议的服务,它允许不同系统间的应用程序通过网络进行通信。本示例着重...
Android WebRTC 视频通话Demo详解 WebRTC(Web Real-Time Communication)是Google推出的一种开源技术,用于实现浏览器之间的实时通信,包括音频、视频和数据共享。在Android平台上,WebRTC提供了一整套API,使得...
Socket.IO 是一个实时应用框架,它为开发人员提供了一种简单的方式来实现在Web上进行双向通信,即服务器和客户端可以实时地、双向地交换数据。这个框架支持多种浏览器和平台,包括Android。在Android客户端使用...
它通过XML(可扩展标记语言)来交换数据,使得不同系统间的数据交换成为可能。SOAP(简单对象访问协议)是用于在Web上交换结构化和类型化的信息的协议,它基于HTTP协议,易于实现且可跨平台。 在Android中,ksoap2...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。在Android开发中,处理JSON数据是常见的任务,尤其是在与服务器进行数据交互时。本篇将详细介绍如何在Android...