Android客户端和服务器端数据交互

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

        一、服务器端:

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

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. package com.ghj.packageofservlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class AndroidServerServlet extends HttpServlet {  
  12.   
  13.     private static final long serialVersionUID = 6792396567928634227L;  
  14.   
  15.     public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {  
  16.         response.setContentType("text/plain; charset=UTF-8");  
  17.         request.setCharacterEncoding("UTF-8");  
  18.         System.err.println(request.getParameter("clientData"));  
  19.         PrintWriter printWriter = response.getWriter();  
  20.         printWriter.print("您好Android客户端!");  
  21.         printWriter.flush();  
  22.         printWriter.close();  
  23.     }  
  24. }  

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

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.   
  7.     <servlet>  
  8.         <servlet-name>AndroidServerServlet</servlet-name>  
  9.         <servlet-class>com.ghj.packageofservlet.AndroidServerServlet</servlet-class>  
  10.     </servlet>  
  11.   
  12.     <servlet-mapping>  
  13.         <servlet-name>AndroidServerServlet</servlet-name>  
  14.         <url-pattern>/AndroidServerServlet</url-pattern>  
  15.     </servlet-mapping>  
  16. </web-app>  

        二、Android手机客户端:

        代码1:下载名为android-async-http-1.4.6.jar的jar文件,下载地址:http://download.csdn.net/download/wangshuxuncom/8116169

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

[java] view plain copy
  1. package com.example.androidclient;  
  2.   
  3. import org.apache.http.Header;  
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10. import android.widget.Toast;  
  11.   
  12. import com.loopj.android.http.AsyncHttpClient;  
  13. import com.loopj.android.http.AsyncHttpResponseHandler;  
  14. import com.loopj.android.http.RequestParams;  
  15.   
  16. public class AndroidClientActivity extends Activity {  
  17.       
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.android_client);  
  22.   
  23.         Button sendButton = (Button) findViewById(R.id.send_button);  
  24.         sendButton.setOnClickListener(new OnClickListener(){  
  25.             @Override  
  26.             public void onClick(View v) {  
  27.                 RequestParams requestParams = new RequestParams();  
  28.                 requestParams.add("clientData", "您好服务器端!");  
  29.                 new AsyncHttpClient().post("http://172.16.99.207:8080/AndroidServer/AndroidServerServlet", requestParams, new AsyncHttpResponseHandler() {  
  30.                     @Override  
  31.                     public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {  
  32.                         if(statusCode == 200){  
  33.                             Toast.makeText(AndroidClientActivity.this, new String(responseBody), Toast.LENGTH_LONG).show();  
  34.                         }  
  35.                     }  
  36.                     @Override  
  37.                     public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {  
  38.                         Toast.makeText(AndroidClientActivity.this, "没有获取到Android服务器端的响应!", Toast.LENGTH_LONG).show();  
  39.                     }  
  40.                 });  
  41.             }  
  42.         });  
  43.     }  
  44. }  

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

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:paddingBottom="@dimen/activity_vertical_margin"  
  6.     android:paddingLeft="@dimen/activity_horizontal_margin"  
  7.     android:paddingRight="@dimen/activity_horizontal_margin"  
  8.     android:paddingTop="@dimen/activity_vertical_margin"  
  9.     tools:context=".MainActivity" >  
  10.   
  11.    <Button  
  12.        android:id="@+id/send_button"  
  13.        android:layout_width="wrap_content"  
  14.        android:layout_height="wrap_content"  
  15.        android:layout_centerHorizontal="true"  
  16.        android:layout_centerVertical="true"  
  17.        android:text="@string/hello_server" />  
  18.   
  19. </RelativeLayout

        说明:使用android-async-http-1.4.6.jar jar这种形式实现Android客户端和服务器端数据交互是最常用的大笑大笑大笑

posted @ 2016-10-07 14:08  Seachal  阅读(726)  评论(0编辑  收藏  举报

作者:Seachal
出处:http://www.cnblogs.com/ZhangSeachal
如果,您认为阅读这篇博客让您有些收获,不妨点击一下左下角的【好文要顶】与【收藏该文】
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】
如果,您对我的博客内容感兴趣,请继续关注我的后续博客,我是【Seachal】

我的GitHub 我的CSDN 我的简书

本博文为学习、笔记之用,以笔记记录作者学习的知识与学习后的思考或感悟。学习过程可能参考各种资料,如觉文中表述过分引用,请务必告知,以便迅速处理。如有错漏,不吝赐教!