网上有很多例子来演示Android客户端和服务器端数据如何实现交互不过这些例子大多比较繁杂,对于初学者来说这是不利的,现在介绍几种代码简单、逻辑清晰的交互例子,本篇博客介绍第一种:

一、服务器端:

代码1:添加名为“AndroidServerServlet.java”的文件

package com.ghj.packageofservlet;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 AndroidServerServlet extends HttpServlet {private static final long serialVersionUID = 6792396567928634227L;public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/plain; charset=UTF-8");request.setCharacterEncoding("UTF-8");System.err.println(request.getParameter("clientData"));PrintWriter printWriter = response.getWriter();printWriter.print("您好Android客户端!");printWriter.flush();printWriter.close();}}

代码2:修改名为“web.xml”的文件

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet-name>AndroidServerServlet</servlet-name><servlet-class>com.ghj.packageofservlet.AndroidServerServlet</servlet-class></servlet><servlet-mapping><servlet-name>AndroidServerServlet</servlet-name><url-pattern>/AndroidServerServlet</url-pattern></servlet-mapping></web-app>

二、Android手机客户端:

代码1:添加名为“AndroidClientActivity.java”的文件

package com.example.androidclient;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;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 android.app.Activity;import android.os.Bundle;import android.os.StrictMode;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class AndroidClientActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.android_client);if (android.os.Build.VERSION.SDK_INT > 9) {    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();    StrictMode.setThreadPolicy(policy);}Button sendButton = (Button) findViewById(R.id.send_button);sendButton.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {HttpPost httpRequest = new HttpPost("http://172.16.99.207:8080/AndroidServer/AndroidServerServlet");    List<NameValuePair> params = new ArrayList<NameValuePair>();    params.add(new BasicNameValuePair("clientData", "您好服务器端!"));    try {    httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));//设置请求参数项                HttpClient httpClient = new DefaultHttpClient();                HttpResponse httpResponse = httpClient.execute(httpRequest);//执行请求返回响应                if(httpResponse.getStatusLine().getStatusCode() == 200){//判断是否请求成功                Toast.makeText(AndroidClientActivity.this, EntityUtils.toString(httpResponse.getEntity()), Toast.LENGTH_LONG).show();                }else{                Toast.makeText(AndroidClientActivity.this, "没有获取到Android服务器端的响应!", Toast.LENGTH_LONG).show();                }            } catch (ClientProtocolException e) {            e.printStackTrace();    } catch (UnsupportedEncodingException e) {    e.printStackTrace();    } catch (IOException e) {    e.printStackTrace();    }}});}}
注意:请注意“AndroidClientActivity.java”文件中34、35、36和37这4行代码——如果没有这几行代码,则会出现android.os.NetworkOnMainThreadException异常,关于该异常请参见另一篇名为《 android.os.NetworkOnMainThreadException异常》博客

代码2:添加名为“android_client.xml”的文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >   <Button       android:id="@+id/send_button"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:layout_centerHorizontal="true"       android:layout_centerVertical="true"       android:text="@string/hello_server" /></RelativeLayout>

0分下载该Demo

更多相关文章

  1. Android SDK Manager在添加Platforms和其他Packages时提示无法在
  2. android raw读取超过1M文件的方法
  3. Android中向webview注入js代码
  4. Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短
  5. Android SDK编译 ——如何将自己源代码加入android.jar
  6. Android 资源文件夹下的文件不能有大写字符,会导致R.java无法生成
  7. Android 高级混淆和代码保护技术

随机推荐

  1. Android休眠问题探讨(1)
  2. 【幻灯片分享】和Android源代码一起工作
  3. 给Android开发者的一封信
  4. Android实习周记:第一周,井底之蛙上岸
  5. Cygwin的安装流程
  6. Android(安卓)Studio 将github作为远程ma
  7. Android(安卓)launcher动态Icon的实现方
  8. android 如何用wireshark抓取模拟器的包
  9. Android(安卓)项目中图片压缩看我的blog
  10. 防止Android过快点击造成多次事件的三种