`
javadonkey
  • 浏览: 111974 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过HttpURLConnection发送XML字符串流

    博客分类:
  • java
阅读更多
今天干活时有个需求,要和.net进行一次交互,想在Struts的Action中接收.net通过HTTPt发过来的XML格式的字符流!然后就解析这个XML字符串通过一些处理然后存数据库。

在做完解析过程和存数据库后,想自己测试一下,所以就想到了通过JDK的HttpURLConnection向自己的Action发送一个用于测试的XML格式的字符流,然后就出现了以下的代码

public class TestClientRegist extends TestCase {

public void testRegist(){
    try{

          // 用于测试,读的自己本地的XML文件
           FileInputStream input = new FileInputStream(new File("regist.xml"));

          // Action地址
          URL url = new URL("http://localhost:8080/fstm/rmi/client/regist.do");
          HttpURLConnection conn = (HttpURLConnection)url.openConnection();
          conn.setDoOutput(true);
          conn.setRequestMethod("POST");

           byte[] b = new byte[1024];
          int l = 0;
          OutputStream out = conn.getOutputStream();
          out.write("data=".getBytes());
          while((l = input.read(b, 0, b.length)) != -1){
                 out.write(b, 0, l);
          }
          out.close();
          InputStream in = conn.getInputStream();
          in.close();
         }catch(Exception ex){
                ex.printStackTrace();
       }
   }
}

这些代码是没问题的啦。但没用过这东西,刚开始出了好多问题。

1,第一次在下面没有获取“输入流”,发现没执行时没有反应,Action那边也没有调用

加上以后就好了。问了个“高人”才明白,这里需要建立一次连接,当执行完输出流后。还要接收HTTP的响应。还遇到一些别的问题就不在罗嗦了~~~~大家有什么问题可以来多讨论讨论。

有什么高见请赐教。一定认真接受。

下面在给出Action接收的代码

public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {

		try {
			InputStream in = request.getInputStream();
			
			BufferedReader br = new BufferedReader(new InputStreamReader(in));
			StringBuffer data = new StringBuffer();
			String line = null;
			while((line = br.readLine()) != null){
				data.append(line);
			}
			logger.debug(data);
			clientMgr.doRegistManager(data.toString());
// 设置返回状态			
response.setStatus(HttpServletResponse.SC_OK);
		} catch (Exception ex) {
			response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
			logger.warn("", ex);
		}
		return null;
	}


分享到:
评论
3 楼 stworthy 2008-08-17  
用DOTNET发数据给STRUTS,无需再弄什么协议,直接用HTTP协议承载数据不更好吗。直接用WebRequest发送数据就行。STRUTS中只管按正常的方式读取数据就行。
2 楼 不是流氓 2008-08-17  
我也遇到了同样的问题,和asp的程序进行一次交互,我先发送XML字节流,然后他们给出响应,而且他们规定了发送字节的大小,并且发送后我还需要再接受一次他们的XML字节流,这个问题经常抛出异常,而且每次查看日志的时候我就烦,都是TIMEOUT或者500的错误,让人很郁闷,不知道有没又其他技术能解决这个问题
我在网上搜了N久,就那么几篇写这个的文章
1 楼 chbest 2008-07-15  
HttpClient或者XmlRpc可以更好的实现

相关推荐

    java http 发送xml报文(java发送xml报文实例+参数)

    本篇文章将深入探讨如何在Java中利用HTTP协议发送XML报文,并通过实例和参数解析具体实现步骤。 首先,我们需要引入Java的HttpURLConnection类,这是Java标准库提供的HTTP客户端接口。发送XML报文通常涉及到POST或...

    java http 发送xml报文

    - **发送数据**:将之前构建的XML字符串转换为字节数组,并通过`DataOutputStream`写入到连接的输出流中,完成数据的发送。 - **接收响应**:通过`BufferedReader`读取服务器的响应,将读取的每一行追加到`...

    httpurlconnection xml

    本示例中的代码着重于利用HTTPURLConnection处理XML数据,这在移动应用中尤其常见,比如从远程服务器获取配置信息或者同步用户数据。下面将详细介绍这个主题中的关键知识点。 1. **HTTPURLConnection的使用** - **...

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

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

    java HttpURLConnection 发送文件和字符串信息

    java HttpURLConnection 发送文件和字符串信息 java HttpURLConnection 是一种常用的网络通信协议,它可以用于发送文件和字符串信息。下面将详细介绍 java HttpURLConnection 发送文件和字符串信息的相关知识点。 ...

    java 通过模板生成 xml,发送报文

    3. **转换为字符串**:为了发送或保存,我们需要将`Document`对象转换为字符串,这通常通过`TransformerFactory`和`Transformer`实现。 ```java TransformerFactory transformerFactory = TransformerFactory.new...

    Java利用HttpURLConnection发送post请求上传文件.docx

    总的来说,使用Java的`HttpURLConnection`发送POST请求并上传文件涉及理解HTTP协议的多部分表单数据格式,以及如何通过`DataOutputStream`正确地构造这些数据。通过这种方式,你可以实现自定义的文件上传逻辑,而不...

    使用HttpURLConnection发送短信

    通过以上分析可以看出,使用`HttpURLConnection`发送短信的过程主要包括了配置参数、编码内容、构建URL、创建连接并发送请求以及异常处理等几个步骤。这种方式虽然简单易行,但在实际生产环境中还需要考虑到安全性...

    JAVA通过HttpURLConnection 上传和下载文件的方法

    JAVA通过HttpURLConnection上传和下载文件的方法 JAVA通过HttpURLConnection上传和下载文件的方法是非常有实用价值的,需要的朋友可以参考下。HttpURLConnection是一个Java类,用于从网络中读取数据或向网络中写入...

    AndroidHttpURLConnection发送GET请求

    调用URL对象的openConnection( )来获取HttpURLConnection对象实例: HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 设置HTTP请求使用的方法:conn.setRequestMethod("GET"); 设置连接超时,...

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

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

    向url发送xml包,并得到返回的XML包

    本主题将深入探讨如何通过编程向URL发送XML数据并接收返回的XML响应,主要涉及Java相关的技术。请确保已安装了Java Development Kit (JDK),这是编写和运行Java程序的基础。 首先,我们要使用HTTP协议来实现这个...

    以实体数据发送xml,号码归属地查询

    然后,通过HTTP客户端库,如Java的HttpURLConnection或Python的requests库,将这个XML字符串发送到Web服务器。服务器端接收到请求后,会解析XML,找到手机号码,然后进行归属地查询。这可能涉及到数据库查询,比如...

    java 使用HttpURLConnection发送数据简单实例

    通过使用HttpURLConnection,可以实现向服务器发送数据的功能。在本文中,我们将详细介绍 Java 使用HttpURLConnection发送数据简单实例的相关知识点。 一、HttpURLConnection 概述 HttpURLConnection 是 Java 语言...

    Android流方式发送XML数据

    ### Android流方式发送XML数据详解 在Android应用开发过程中,数据传输是不可或缺的一环,尤其在与服务器交互时,如何高效、稳定地发送大量数据变得尤为重要。本文将深入探讨一种适用于大数据量传输的方法——流...

    远程请求url,发送xml参数,返回结果值的2个方法

    3. **发送XML数据**:通过`OutputStream`发送XML数据。 ```java try(OutputStream os = connection.getOutputStream()) { os.write(xmlData.getBytes("UTF-8")); } ``` 4. **读取返回值**:获取响应码并检查是否...

    java实现多次HttpURLConnection共享session

    在Java编程中,HTTPURLConnection是Java标准库提供的一种用于处理HTTP连接的类,它允许我们发送HTTP请求并接收响应。然而,HTTP协议本身是无状态的,这意味着每次请求都是独立的,不会记住之前的交互,这对于需要...

    通过HttpURLConnection获取SESSIONID

    import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import java.util.Map; public class HttpTest { private HttpURLConnection hc = ...

    使用HttpURLConnection或HttpClient方式传json值到spring中

    在Java开发中,我们经常需要通过HTTP协议与服务器进行数据交互,其中发送JSON数据到Spring服务端是常见的操作。本文将详细介绍如何使用`HttpURLConnection`和`HttpClient`这两种方式来实现这一目标。 首先,让我们...

    Http学习之使用HttpURLConnection发送post和get请求 android

    2. POST请求:用于提交数据到服务器进行处理,参数通过消息主体发送,可以处理大量数据,非幂等,可能会改变服务器状态。 接下来,我们将详细讲解如何使用`HttpURLConnection`实现这两种请求。 **发送GET请求** `...

Global site tag (gtag.js) - Google Analytics