网上有很多例子来演示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.Handler;import android.os.Message;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);Button sendButton = (Button) findViewById(R.id.send_button);sendButton.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {new Thread(new Runnable(){    @Override    public void run() {    HttpPost httpRequest = new HttpPost("http://172.16.99.207:8080/AndroidServer/AndroidServerServlet");    List<NameValuePair> params = new ArrayList<NameValuePair>();    params.add(new BasicNameValuePair("clientData", "您好服务器端!"));    try {    Message message = new Message();                    Bundle bundle = new Bundle();    httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));//设置请求参数项                HttpClient httpClient = new DefaultHttpClient();                HttpResponse httpResponse = httpClient.execute(httpRequest);//执行请求返回响应                if(httpResponse.getStatusLine().getStatusCode() == 200){//判断是否请求成功                    bundle.putString("msg", EntityUtils.toString(httpResponse.getEntity()));                }else{                bundle.putString("msg", "没有获取到Android服务器端的响应!");                }                message.setData(bundle);                    handler.sendMessage(message);            } catch (ClientProtocolException e) {            e.printStackTrace();    } catch (UnsupportedEncodingException e) {    e.printStackTrace();    } catch (IOException e) {    e.printStackTrace();    }    }}).start();}});}private Handler handler = new Handler(){@Overridepublic void handleMessage(Message message) {super.handleMessage(message);        Bundle bundle = message.getData();        String msg = bundle.getString("msg");Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();}};}

代码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. AndroidGUI27:findViewById返回null的解决办法
  2. android Shape使用(转)
  3. Android(安卓)2.3 代码混淆proguard技术介绍
  4. android中的Handler和Callback机制
  5. Android中的JNI和NDK编程实践
  6. Android实现Service下载文件,Notification显示下载进度的示例
  7. android -------- GifView 显示gif图片
  8. Android(安卓)自定义弹窗框架
  9. Android(安卓)EditText部分特殊功能

随机推荐

  1. Android关键资源详解
  2. Android(安卓)多Dex分包机制
  3. Android中Fragment和ViewPager那点事儿(仿
  4. Android,TextVIew单行加省略号 ...对比较
  5. Android使用本地svg及不显示问题解决
  6. Android基础和运行机制
  7. Android(安卓)中文 API (100) —— Scrol
  8. Android受手机制造商青睐 业内担心埋下隐
  9. 【译】Android中的安全数据— Android中
  10. android 与JS之间的交互