Android 流方式发送XML数据

我们可以采用请求参数的形式向服务器发送数据,但是当数据太大时,此方法不可用,此时我们应该采用流的方式发送数据,下面这个例子是将一个xml文件的内容以字节流的形式发送给服务器

1.新建一个web项目,由于我使用了struts2,需要引入相关的jar包并配置相应的环境,可参考博文另一篇博文 Android POST方式提交数据[url]http://liaokang-java.iteye.com/blog/1166083[/url]

2.新建一个action

package com.lamp.action;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

public class XMLDataAction {

//通过输入流获得字节数组
public static byte[] readStream(InputStream is) throws Exception {
byte[] buffer = new byte[1024];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int len = 0;
while((len=is.read(buffer)) != -1){
bos.write(buffer, 0, len);
}
is.close();
return bos.toByteArray();
}

public String execute() throws Exception {
//获得HttpServletRequest对象
HttpServletRequest request = ServletActionContext.getRequest();
//从客户端获得输入流
InputStream is = request.getInputStream();
byte[] data = readStream(is);
String str = new String(data,"UTF-8");
if(str != null){
System.out.println(str);
return "success";
}
return "error";
}
}



3.在struts.xml中对action进行相关配置

<package name="lamp" extends="struts-default">
<action name="XMLData" class="com.lamp.action.XMLDataAction">
<result name="success">/WEB-INF/page/success.jsp</result>
<result name="error">/WEB-INF/page/error.jsp</result>
</action>
</package>


4.新建一个Android工程,并写一个工具类将数据流发送给服务器端

package com.lamp.util;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class NetTool {


//以流方式向服务器端发送xml文件数据,并获得服务器端输出流
public static InputStream sendXMLData(String urlPath,byte[] data,String encoding) throws Exception{
URL url = new URL(urlPath);
//打开连接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置提交方式
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");
//post方式不能使用缓存
conn.setUseCaches(false);
conn.setInstanceFollowRedirects(true);
//设置连接超时时间
conn.setConnectTimeout(6*1000);
//配置本次连接的Content-Type
conn.setRequestProperty("Content-Type", "text/html;charset=UTF-8");
//维持长连接
conn.setRequestProperty("Connection", "Keep-Alive");
//设置浏览器编码
conn.setRequestProperty("Charset", "UTF-8");
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
//将请求参数数据向服务器端发送
dos.write(data);
dos.flush();
dos.close();
if(conn.getResponseCode() == 200){
//获得服务器端输出流
return conn.getInputStream();
}
return null;
}

//通过输入流获得字节数组
public static byte[] readStream(InputStream is) throws Exception {
byte[] buffer = new byte[1024];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int len = 0;
while((len=is.read(buffer)) != -1){
bos.write(buffer, 0, len);
}
is.close();
return bos.toByteArray();
}

}



5.编写一个测试类对对其进行测试

package com.lamp.activity;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import android.os.Environment;
import android.test.AndroidTestCase;
import android.util.Log;

import com.lamp.util.NetTool;

public class TestPostData extends AndroidTestCase {
private static final String TAG = "TestPostData";

//以流的方式向服务器发送数据
public void testSendXML() throws Exception{
String urlPath = "http://ip地址:8080/TestAndroid/XMLData";
//从sdk卡中读取persons.xml文件
File file = new File(Environment.getExternalStorageDirectory(),"persons.xml");
InputStream is = new FileInputStream(file);
byte[] data = NetTool.readStream(is);
is = NetTool.sendXMLData(urlPath, data, "UTF-8");
data = NetTool.readStream(is);
Log.i(TAG, new String(data));
}

}



6.记得要在AndroidManifest.xml文件中注册访问网络权限以及单元测试所需的配置

<uses-permission android:name="android.permission.INTERNET"/>


最后将web项目运行起来,然后运行单元测试类,我们看到服务器端打印出了客户端传送过来的数据
【android开发-24】android中访问http协议网络以及解析xml格式数据的详细讲解 android中httpURLconnection,OKhttp访问网络用法,以及Pull和SAX解析xml格式数据的代码例子 阅读详情

相关推荐

Android中通过网络通信发送XML数据给WEB应用案例

Android中通过网络通信发送XML数据给WEB应用案例!

android客户端发送XML数据至服务器

使用android发送XML数据 服务器端: 1.用一个servlet来接收android客户端的请求。 import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpSer

持之以恒 3404

Android发送xml数据给服务器的方法

主要介绍了Android发送xml数据给服务器的方法,以实例形式较为详细的分析了Android发送XML数据及接收XML数据的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

android http通过post请求发送一个xml

今天,简单讲讲android如何在网络请求时通过post方式发送xml数据。其实也很简单,不过我之前对网络请求这一块不太熟悉,当需要做这个发送xml数据时,居然不知道怎么做。后来,在网上查找资料,最终是解决了问题。这里记录一下。一.通过HttpURLConnection发送xml数据因为原理很简单,直接举例子。其中发送的xml数据为:&lt;?xml version = “1.0” ?&gt; ...

谢岩的博客 5155

开源实战 | 基于SolidWorks与Matlab的并联索驱机器人轨迹规划全流程

本文详细介绍了基于SolidWorks与Matlab的并联索驱机器人轨迹规划全流程,涵盖从基础概念到实战技巧的各个环节。通过SolidWorks建模、Matlab运动学实现及轨迹优化策略,展示了如何实现高精度轨迹规划,适用于摄影、医疗等领域的机器人应用。

weixin_28331555的博客 403

Qwen-Image LoRA训练实战:从数据准备到异常修复的全流程解析

本文详细解析了Qwen-Image LoRA训练的全流程,从数据准备到参数优化再到异常修复。通过实战案例展示了如何利用LoRA技术微调Qwen-Image模型,提升中文场景下的图像生成质量,特别针对手脚生成异常等问题提供了有效解决方案。文章还分享了中文提示词优化技巧和高级训练方法,帮助开发者高效训练出高质量的LoRA模型。

lemon的博客 965

怎么把xml文件到url post方法 android,提交(post)xml文件给指定url的2种方法

1 这段代码是在网上搜到的,拿来共享,项目正好要用到。其中的data你只需要传递一个xml字符串就可以protected string PostXmlToUrl(string url,string data){HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(url);hwr.Method =...

weixin_29028145的博客 511

深度强化学习研究笔记(1)——入门(马尔科夫决策过程,贝尔曼方程,价值迭代和策略迭代)

1. 强化学习(Reinforcement learning)概述 强化学习(Reinforcement learning)的基本内涵是将问题用代理和环境进行建模。其中代理能够对环境执行一些特定的动作a∈Aa \in Aa∈A,从而到达某个状态s∈Ss \in Ss∈S,然后我们就可以根据该状态为代理赋予特定的奖励rrr。强化学习的基本思想如下图所示: 代理的目标是最大化未来的奖励总和,它通过将...

越野者的博客 5280

android xml网络传输数据,Android中XML数据的操作

XML,即可扩展标记语言(Extensible Markup Language)非常适合万维网传输,提供统一方法来描述和交换独立于应用程序或供应商的结构化数据,在互联网上被广泛使用。本文介绍了Android中读取XML数据与在Android中生成XML数据的方法。1.xml简介xml可扩展标记语言,extensible Markup Language传输数据而非显示数据,需要自定义标签,为纯文本大...

weixin_30599809的博客 335

【RL+空战】学习记录01:jsbsim 仿真环境初次学习,F16 战机起飞

【代码】【RL+空战】学习记录01:jsbsim 仿真环境初次学习,F16 战机起飞。

weixin_41369892的博客 901

操作系统知识点汇总(王道)

操作系统不论是就业还是升学都是核心的一门课程,对于大部分工科更是必修课程。本文章是对《王道操作系统》所有知识点的总结笔记,以供大家学习以及在备考期间复习使用。让我们一起把知识往脑子里旋好吗!!!......

S mile0804的博客 5万+

android开发之数据共享(参数传递)

一、android的生命周期        android的生命周期可以理解为activity的生命周期,其实一个act

王聚涛的专栏 932

petalinux2022.2启动文件编译配置

petalinux2021之前的版本里,导入目录components/yocto/下的“environment-setup-aarch64-xilinx-linux” 和 “layers/core/oe-init-build-env”的环境,能使用Yocto的devtool工具。(加入下面内容,先petalinux-build下载完成后才能有源码)制作 BOOT.BIN 启动文件:petalinux-package --boot --fsbl --fpga --u-boot --force。

wangjie36的博客 1388

安卓中的XML和JSON

XML和JSON其实还是比较常见了,JAVASE和JAVAEE的学习中或多或少会有些接触的,这篇文章主要关于XML和JSON在安卓中的一些应用。 XML 概述 XML是一种常用的存储数据方式,设计初衷就是为了传输和存储数据。 在Android平台中内部很多地方使用了XML存储: 比如之前的SharedPreferences的存储就是使用了XML文件,持久化存储的同时又兼具轻量的特性。(h...

旧日灯塔 3036

2025年5月架构设计师论文真题回顾,附写作技巧、所涉知识点及参考范文(三)

本文主要回顾2025年上半年(2025-5-24)系统架构设计师考试下午论文的题目,同时附带写作技巧、所涉知识点及参考范文。试题三:多模型数据库及应用。

一几文的编程学习笔记。 629

即插即用系列(代码实践) | CVPR 2025 FDConv:频域动态卷积,打破密集预测任务的参数效率瓶颈

本文提取自 CVPR 2025 的最新底层算子革新论文《Frequency Dynamic Convolution for Dense Image Prediction》。近年来,动态卷积(Dynamic Convolution)通过融合多个并行卷积核极大地提升了模型性能,但研究表明:这些并行卷积核在频域上的响应高度相似,导致了极其严重的参数浪费,且缺乏对不同频率特征的自适应能力。本文复现了该网络的核心架构——FDConv(频率动态卷积)。该方案创造性地在傅里叶域(Fourier Domain)中学习固定参

分享顶会顶刊论文即插即用模块 111

Android 之解析Xml格式数据

解析Xml格式数据

i_nclude的博客 1498

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android 通过HTTP协议发送XML数据并调用

Web Service(WEB服务)能够快捷和方便地综合并结合各种系统、商务和任何应用平台。新出现的 Web Services 标准: SOAP、WSDL 和 UDDI 能够使任何系统和系统之间的应用变为更加方便和廉价。   Web服务(Web Services)和Service—Oriented Architecture作为实现分布式系统和履行公司内部、公司之间的应用整合的技术和架构

muxiaobo的专栏 1050

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android XML解析学习——Sax方式

一.简单介绍XML(eXtensible Markup Language),即可扩展标记语言,是一种简单的数据存储语言,使用一系列简单的标记描述数据。XML 经常用作 Internet 上的一种数据格式,因此如果您希望通过 Internet 访问数据,则数据很有可能是 XML 格式,或者如果您希望发送数据给 Web 服务,那么您可能也需要发送 XML。简而言之,如果您的 Android 应用程序将利用 Internet,那么您可能需要使用 XML。幸运的是,您可以采用多种方法在 Android 上使用 XM

ichliebephone的专栏 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android 通过HTTP协议发送XML数据并调用

webservice Web Service(WEB服务)能够快捷和方便地综合并结合各种系统、商务和任何应用平台。新出现的 Web Services 标准: SOAP、WSDL 和 UDDI 能够使任何系统和系统之间的应用变为更加方便和廉价。   Web服务(Web Services)和Service—Oriented Architecture作为实现分布式系统和履行公司内部、公司之间的应用

Nick Future 6055

Android使用webService(发送xml数据的方式,不使用jar包)

Android访问WebService-->不使用ksoap2.jar使用http请求

趣学程序 2312

通过HTTP协议发送XML数据并调用

1、发送xml数据给服务器 ,并非以请求参数方式发送: http://192.168.1.10:8080/video/manage.do?xml=....   服务器端代码:VideoManageAction.java     public ActionForward getXML(ActionMapping mapping, ActionForm form,

me15933的专栏 2769

Android——Pull方式解析XML数据

XML文件建立已经Apache服务器建立已经在上一篇介绍过,此处不再多过阐述 正文: 添加jar包 implementation 'com.squareup.okhttp3:okhttp:3.4.1' 闭包里申请网络权限 <uses-permission android:name="android.permission.INTERNET"/> 布局文件中就一个Button,此处不再阐述,解析的XML数据将以日志方式体现 MainActivity.java代码如下: public class

FranzLiszt的博客 2987

Android——SAX方式解析XML数据

XML文件建立已经Apache服务器建立已经在上一篇介绍过,此处不再多过阐述 正文: 添加jar包 implementation 'com.squareup.okhttp3:okhttp:3.4.1' 闭包里申请网络权限 <uses-permission android:name="android.permission.INTERNET"/> 布局文件中就一个Button,此处不再阐述,解析的XML数据将以日志方式体现 建立一个ContentHandler类并继承DefaultHandler

FranzLiszt的博客 1402

安卓XML解析的几种方式(DOM,SAX,PULL..)

在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX、Pull、Dom解析方式。最近做了一个android版的优快云阅读器,用到了其中的两种(sax,pull),今天对android解析xml的这三种方式进行一次 ...在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX、Pull、Dom解析方式。最近做了一个andro...

一只小翊的博客 1371

XML解析各种方式比较,Android进阶之光

对于Android 的移动设备而言,因为设备的资源比较宝贵,内存是有限的,所以我们需要选择适合的技术来解析XML,这样有利于提高访问的速度。

qq_58071132的博客 821
上一篇: Android POST方式提交数据
下一篇: Android 音频播放
lk231_java
博客等级 码龄15年 0粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值