`
:倾诉
  • 浏览: 24141 次
  • 性别: Icon_minigender_1
  • 来自: 广东揭阳
社区版块
存档分类
最新评论

android发送xml数据到web的方法与问题

阅读更多

android端向web发送xml数据:


	public void sendXml() throws Exception{
		String urlStr = "http://192.168.0.2:8080/web/info!receiveXmlAction.action";
		URL url = new URL(urlStr);
		HttpURLConnection conn = (HttpURLConnection)url.openConnection();
		InputStream is = context.getAssets().open("struts.xml");
//		BufferedReader br = new BufferedReader(new InputStreamReader(is));
//		StringBuffer sb = new StringBuffer();
//		do{
//			sb.append(br.readLine());
//		}while(br.readLine() != null);
		conn.setRequestMethod("POST");
		conn.setConnectTimeout(5*1000);
		conn.setDoOutput(true);
		conn.setRequestProperty("Content-type", "text/xml charset=UTF-8");
	//	conn.setRequestProperty("Content-Length", String.valueOf(sb.toString().getBytes().length));
		OutputStream os = conn.getOutputStream();
		ByteArrayOutputStream baos = new ByteArrayOutputStream();  
		byte[] buffer = new byte[1024];
		int len=0;
		while((len=is.read(buffer))!=-1){
			baos.write(buffer,0,len);
			Log.i("UPLOAD", new String(buffer));
		}
		byte[] data = baos.toByteArray();
		os.write(data);
		is.close();
		os.flush();
		os.close();
		Log.i("UPLOAD", String.valueOf(conn.getResponseCode()));
	}

 以上代码能够成功发送并在服务器接收,但是代码从OutputStream 开始改为下面的就不行了

 

OutputStream os = conn.getOutputStream();
		
		byte[] buffer = new byte[1024];
		int len=0;
		while((len=is.read(buffer))!=-1){
			os.write(buffer,0,len);
			Log.i("UPLOAD", new String(buffer));
		}
		

 

根本还调用不到服务器端的receiveXmlAction方法.不知道是为什么?

 

也就是说,我直接通过输出流输出是不行的,必须先把数据输出到ByteArrayOutputStream ,再转为二进制数据,再用

OutputStream 输出才可以

 

有没有类似情况的朋友??指教一下

0
0
分享到:
评论
1 楼 eryanwcp 2011-12-26  
public static String sendXML(String path,InputStream inStream,Map<String, String> params)throws Exception{
		String requestXml = XmlUtil.readXmlFile(inStream,params);//组合成xml实体内容  类似socket里面的报文
		Log.d(TAG, "request xml:\n" + requestXml);
		byte[] data = requestXml.getBytes();
		URL url = new URL(path);
		HttpURLConnection conn = (HttpURLConnection)url.openConnection();
		conn.setRequestMethod("POST");
		conn.setConnectTimeout(5 * 1000);
		conn.setDoOutput(true);//如果通过post提交数据,必须设置允许对外输出数据
		conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
		conn.setRequestProperty("Content-Length", String.valueOf(data.length));
		OutputStream outStream = conn.getOutputStream();
		outStream.write(data);
		outStream.flush();
		outStream.close();
		String result;
		if(conn.getResponseCode()==200){
			String responseXml = new String(StreamTool.readInputStream(conn.getInputStream()),"UTF-8");//响应xml数据
			Log.d(TAG, "response xml:\n" + responseXml);
			Map<String, String> map = parseXml(responseXml);
			result = map.get("result");
			if("OK".equals(result)){
				User user = new User(map.get("username"), map.get("password"));//登录成功后即可保存登录状态在客户端
			}
			return responseXml;
		}
		return null;
	}

相关推荐

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

    本案例主要讲解如何在Android应用中通过网络通信发送XML数据到Web服务器,从而实现数据交换。 首先,我们需要理解XML(eXtensible Markup Language),它是一种用于标记数据的语言,具有良好的可读性和可扩展性。在...

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

    本篇文章将详细介绍如何在Android应用中发送XML数据到服务器以及接收服务器返回的XML数据。 首先,我们来看如何在Android中发送XML数据到服务器。这个过程通常涉及到网络请求,可以使用HTTP协议实现。以下是一个...

    android访问web应用并返回xml字符串

    总的来说,Android通过HttpURLConnection实现GET请求,结合XMLPullParser解析返回的XML数据,可以实现与Web应用的高效交互。在实际开发中,你可能还需要考虑错误处理、网络权限、异步执行(如使用AsyncTask或...

    从网络获取XML数据并且显示出来

    本话题主要探讨如何从网络获取XML数据并将其有效地呈现给用户,我们将会深入Android和Web应用两个方面来阐述这一过程。 首先,XML(Extensible Markup Language)是一种结构化数据格式,广泛用于数据交换,因为它...

    Xamarin android调用web api入门示例

    本示例将介绍如何在 Xamarin Android 项目中调用 Web API,这是一个常见的需求,用于获取或发送数据到服务器。以下是对这个入门示例的详细讲解。 首先,我们需要理解 Xamarin Android 调用 Web API 的基本概念。Web...

    Android 请求 WebAPI的案例

    在Android开发中,与WebAPI进行交互是常见的需求,例如获取服务器数据、发送用户信息等。本案例"Android请求WebAPI"将详细讲解如何在Android应用中实现这一功能。WebAPI通常指的是基于HTTP协议的RESTful API,允许...

    Working with XML on Android

    在进行Android应用开发时,理解如何处理XML数据将会极大地丰富应用的功能性,使其可以有效地与Web服务进行数据交换。 随着Android技术的不断进步,处理XML的方法和技术也在不断地更新。开发者应当随时关注最新的...

    Android Stock实现数据发送

    这个场景中,我们关注的是"Android Stock实现数据发送",这涉及到多个技术点,包括网络通信、数据处理、多线程以及可能的数据安全问题。 首先,Android Stock实现数据发送通常涉及到网络请求。在Android中,我们...

    Android解析XML(PULL)展示到ListView

    在Android开发中,将XML数据解析并展示到ListView是一种常见的数据加载方式。在这个场景中,我们看到使用了PULL解析器来处理XML数据,并通过ListView显示。以下是详细的知识点讲解: 1. **PULL解析器**: PULL解析...

    android上传图片到web服务器

    在Android平台上,将图片上传到Web服务器是一项常见的任务,尤其在开发涉及用户交互的应用时,如社交应用、电商应用等。这个"android上传图片到web服务器"的示例提供了使用HttpPost和MultiPartEntity方法实现这一...

    cocos2d-x WebServer网络访问和交互,对返回XML数据的解析DEMO

    本DEMO主要展示了如何使用cocos2d-x实现这一功能,特别是针对返回的XML数据进行解析。以下将详细阐述相关知识点。 首先,`cocos2d-x`是一个跨平台的游戏开发框架,基于C++编写,支持iOS、Android、Windows等多个...

    android webserver简单网页服务器

    Android WebServer可以用于本地应用测试、数据共享、设备间通信或者作为教育示例。例如,开发者可以利用它快速预览本地应用的网页内容,或者在没有公网IP的情况下,通过内网穿透技术让外部设备访问Android设备上的...

    xamarin.android listview控件通过web api获取并展示数据

    例如,你可以创建一个方法,该方法接收URL作为参数,然后使用HttpClient发送GET请求,获取返回的JSON或XML数据。 ```csharp async Task&lt;string&gt; GetDataFromApi(string apiUrl) { var client = new HttpClient(); ...

    上传数据到web服务器

    在IT行业中,将数据上传到Web服务器是一项基本且至关重要的任务,这通常涉及到网页表单提交、API接口交互以及文件传输。以下是一些关于“上传数据到Web服务器”的关键知识点: 1. **HTTP协议**:HTTP(超文本传输...

    Android与Web端交互源码

    在移动应用开发中,Android平台经常需要与Web端进行数据交互,以便实现用户界面与服务器数据的同步。这个"Android与Web端交互源码"是一个非常实用的学习资源,特别是对于初学者来说,它能帮助理解如何在Android应用...

    vs2017 android 链接 web api

    - **处理响应**:解析从Web API返回的JSON或XML数据,将其转化为Java对象,展示在Android UI上。 - **授权与安全**:如果Web API需要身份验证,可能需要实现OAuth、JWT等机制,确保通信安全。 4. **示例代码**:...

Global site tag (gtag.js) - Google Analytics