`
minghaitang
  • 浏览: 129040 次
社区版块
存档分类
最新评论

Android(五)数据存储之五网络数据交互 2

阅读更多

 3.ClientService

package com.changcheng.web.client.service;

 

import java.io.ByteArrayOutputStream;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.HashMap;

import java.util.Map;

import android.os.Environment;

import android.util.Log;

 

public class ClientService {

 

         private static final String TAG = "ClientService";

 

         // get方式发送请求

         public static void sendDataToServerByGet() throws Exception {

                   // 主机地址不可以设置为localhost127.0.0.1,必须是本机或其他机器所在Internet网或局域网地址。

                   String path = "http://192.168.0.2:8080/AndroidWebServer/server.do?"

                                     + "method=sendDataByGet&name=changcheng";

                   URL url = new URL(path);

                   HttpURLConnection conn = (HttpURLConnection) url.openConnection();

                   conn.setConnectTimeout(6 * 1000);

                   // 请求成功

                   if (conn.getResponseCode() == 200) {

                            // 获取服务器返回的数据

                            byte[] data = readStream(conn.getInputStream());

                            Log.i(TAG, new String(data, "UTF-8"));

                   }

         }

 

         // Post方式发送请求,面向HTTP协议编程

         public static void sendDataTOserverByPost() throws Exception {

                   String path = "http://192.168.0.2:8080/AndroidWebServer/server.do";

                   String params = "method=sendDataByPost&name=tingting";// 请求参数

                   byte[] data = params.getBytes();

                   URL url = new URL(path);

                   HttpURLConnection conn = (HttpURLConnection) url.openConnection();

                   conn.setConnectTimeout(6 * 1000);

                   conn.setDoOutput(true);// 发送POST请求必须设置允许输出

                   conn.setUseCaches(false);// 不使用Cache

                   conn.setRequestMethod("POST");

                   conn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接

                   conn.setRequestProperty("Charset", "UTF-8");

                   conn.setRequestProperty("Content-Length", String.valueOf(data.length));

                   conn.setRequestProperty("Content-Type",

                                     "application/x-www-form-urlencoded");

                   DataOutputStream outStream = new DataOutputStream(conn

                                     .getOutputStream());

                   outStream.write(data);// 以内容实体方式发送请求参数

                   outStream.flush();

                   outStream.close();

                   // 请求成功

                   if (conn.getResponseCode() == 200) {

                            // 获取服务器返回的数据

                            byte[] html = readStream(conn.getInputStream());

                            Log.i(TAG, new String(html, "UTF-8"));

                   }

         }

 

         // 以表单方式发送请求

         public static void sendDataToServerByForm() throws Exception {

                   Map<String, String> params = new HashMap<String, String>();

                   params.put("method", "sendDataByForm");

                   params.put("strData", "字符串数据");

                   // 获取SDCard中的good.jpg

                   File file = new File(Environment.getExternalStorageDirectory(),

                                     "app_Goog_Android_w.png");

                   FormFile fileData = new FormFile("app_Goog_Android_w.png", new FileInputStream(file),

                                     "fileData", "application/octet-stream");

                   HttpRequester.post(

                                     "http://192.168.0.2:8080/AndroidWebServer/server.do", params,

                                     fileData);

         }

 

         // 获取输入流数据

         private static byte[] readStream(InputStream inStream) throws Exception {

                   byte[] buffer = new byte[1024];

                   int len = -1;

                   ByteArrayOutputStream outStream = new ByteArrayOutputStream();

                   while ((len = inStream.read(buffer)) != -1) {

                            outStream.write(buffer, 0, len);

                   }

                   byte[] data = outStream.toByteArray();

                   outStream.close();

                   inStream.close();

                   return data;

         }

}

       其中使用到的FormFile类:

package com.changcheng.web.client.service;

 

import java.io.InputStream;

 

/**

 * 上传文件

 */

public class FormFile {

         /* 上传文件的数据 */

         private byte[] data;

         private InputStream inStream;

         /* 文件名称 */

         private String filname;

         /* 表单字段名称*/

         private String formname;

         /* 内容类型 */

         private String contentType = "application/octet-stream";

        

         public FormFile(String filname, byte[] data, String formname, String contentType) {

                   this.data = data;

                   this.filname = filname;

                   this.formname = formname;

                   if(contentType!=null) this.contentType = contentType;

         }

        

         public FormFile(String filname, InputStream inStream, String formname, String contentType) {

                   this.filname = filname;

                   this.formname = formname;

                   this.inStream = inStream;

                   if(contentType!=null) this.contentType = contentType;

         }

        

         public InputStream getInStream() {

                   return inStream;

         }

 

         public void setInStream(InputStream inStream) {

                   this.inStream = inStream;

         }

 

         public byte[] getData() {

                   return data;

         }

 

         public void setData(byte[] data) {

                   this.data = data;

         }

 

         public String getFilname() {

                   return filname;

         }

 

         public void setFilname(String filname) {

                   this.filname = filname;

         }

 

         public String getFormname() {

                   return formname;

         }

 

         public void setFormname(String formname) {

                   this.formname = formname;

         }

 

         public String getContentType() {

                   return contentType;

         }

 

         public void setContentType(String contentType) {

                   this.contentType = contentType;

         }

        

}

 

      

分享到:
评论

相关推荐

    android中不同app间数据交互(1、简单一次性数据交互)demo

    在Android系统中,不同应用程序之间的数据交互是一个常见的需求,例如社交应用分享内容到其他应用,或者从浏览器打开一个链接在地图应用中查看。本篇主要介绍Android中简单的一次性数据交互,即如何通过Intent机制...

    Android数据存储SQLite.docx

    Android 数据存储 SQLite Android 数据存储是 Android 应用程序中的一个重要组件,它负责存储和管理应用程序中的数据。在 Android 中,有多种数据存储方式,包括 SharedPreferences、内部文件存储、SD 卡存储和 ...

    Android客户端与服务器端的json数据交互(内含大量知识点)

    在Android应用开发中,客户端与服务器端的数据交互是不可或缺的一部分,JSON作为一种轻量级的数据交换格式,被广泛用于Android和服务器之间的通信。本主题将深入探讨Android客户端如何使用JSON进行数据交互,包括...

    Android与JSP数据交互

    在IT行业中,Android和JSP的数据交互是移动应用开发中常见的技术组合,特别是在构建服务器-客户端架构的应用时。本文将详细讲解如何利用Android客户端通过HTTP协议与运行在J2EE平台上的服务器进行数据交换,以及如何...

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

    在Android应用开发中,客户端与服务器之间的数据交互是不可或缺的一部分,它使得应用程序能够获取最新的信息、存储用户数据或实现各种在线功能。这个"Android客户端和服务器端数据交互Demo01.zip"应该包含一个示例...

    android 数据存储之 Network

    "android 数据存储之 Network"这个主题主要关注如何在Android应用中有效地管理和存储从网络获取的数据。在这个话题中,我们将深入探讨几种常见的数据存储方法以及它们在网络数据处理中的应用场景。 1. **Shared ...

    Android本地数据存储之文件存储读写

    在Android应用开发中,本地数据存储是至关重要的一个环节,特别是在处理用户数据或者应用程序需要持久化数据时。本文将深入探讨Android系统中的文件存储机制,包括如何读取、写入、重写和删除.txt格式的文件。理解...

    Android客户端与服务器数据交互流程.pdf

    Android客户端与服务器数据交互是移动应用开发中的关键环节,它涉及到网络通信、数据传输、请求响应等多个方面。在这个过程中,客户端通常通过HTTP协议与服务器进行通信,HTTP协议基于TCP/IP协议,确保数据的可靠...

    android数据访问与存储

    本章节将深入探讨Android中常见的数据存储方式,包括内部存储、外部存储、SQLite数据库、SharedPreferences、ContentProvider以及网络存储等。 首先,内部存储是Android为每个应用提供的私有存储空间,数据对其他...

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

    在Android开发中,客户端与服务器端的数据交互是应用程序的核心功能之一。这个名为"Android客户端和服务器端数据交互Demo04.zip"的压缩包文件很可能是为了演示如何在Android应用中实现这种交互。以下是对这个主题的...

    android网络操作

    在Android平台上进行网络操作是应用程序开发中的重要环节,它允许应用与远程服务器进行数据交互,如获取用户信息、上传下载文件、同步数据等。本文将深入探讨“Android网络操作”的核心概念、常用方法以及如何利用...

    Android应用源码之Android学习之数据存储

    在Android应用开发中,数据存储是一项至关重要的任务。Android提供了多种数据存储方式,以满足不同场景下的需求。本文将深入探讨Android应用中的数据存储...总的来说,这份源码将是你提升Android数据存储技能的好材料。

    使用USB数据线连接PC端和Android端进行数据的交互.rar

    在Android设备和PC之间进行数据交互时,主要可以使用以下几种方式: 1. **Android Debug Bridge (ADB)**:ADB是Android SDK的一部分,允许开发者通过USB或无线网络连接到Android设备进行调试、安装应用和传输数据。...

    Android客户端与服务器通信+json交互数据

    综上所述,Android客户端与服务器通信并使用JSON进行数据交互是一个涉及网络编程、JSON处理、服务器框架理解等多个层面的复杂过程。在实际开发中,需要对每个环节都有深入的理解,才能有效地实现客户端与服务器的...

    Android 数据存储技术

    在Android开发中,数据存储是不可或缺的一部分,它允许应用程序持久保存和检索数据。本文将深入探讨Android的数据存储技术,包括几种主要的存储方式及其应用场景。 首先,我们有共享首选项(SharedPreferences)。...

    AndRoid五种存储方式

    下面将详细讲解这五种Android数据存储方式。 1. 文件存储: 文件存储是最基础的存储方式,适用于保存大量的文本、图片、音频等原始数据。Android提供`openFileOutput`和`openFileInput`方法,它们位于`Context`类...

    android和tomcat文件上传和数据交互

    综上所述,"android和tomcat文件上传和数据交互"这个主题涵盖了Android客户端开发、网络编程、文件操作、Struts2框架的使用、Tomcat服务器配置、以及JSON或XML数据交换等多个技术点。在实际项目中,开发者需要熟练...

    Android与服务器交互

    以上就是Android应用与服务器交互的基本知识点,涵盖了从网络请求到数据处理的整个流程。通过学习和实践,开发者可以构建出高效、稳定的客户端-服务器应用程序。在实际项目中,还可能涉及到更多高级概念,如数据缓存...

Global site tag (gtag.js) - Google Analytics