`

要和.net进行一次交互HTTPt发过来的XML格式

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

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


Java代码
1.public class TestClientRegist extends TestCase {  
2. 
3.public void testRegist(){  
4.    try{  
5. 
6.          // 用于测试,读的自己本地的XML文件  
7.           FileInputStream input = new FileInputStream(new File("regist.xml"));  
8. 
9.          // Action地址  
10.          URL url = new URL("http://localhost:8080/fstm/rmi/client/regist.do");  
11.          HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
12.          conn.setDoOutput(true);  
13.          conn.setRequestMethod("POST");  
14. 
15.           byte[] b = new byte[1024];  
16.          int l = 0;  
17.          OutputStream out = conn.getOutputStream();  
18.          out.write("data=".getBytes());  
19.          while((l = input.read(b, 0, b.length)) != -1){  
20.                 out.write(b, 0, l);  
21.          }  
22.          out.close();  
23.          InputStream in = conn.getInputStream();  
24.          in.close();  
25.         }catch(Exception ex){  
26.                ex.printStackTrace();  
27.       }  
28.   }  
29.} 
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接收的代码


Java代码
1.public ActionForward execute(ActionMapping mapping, ActionForm form,  
2.            HttpServletRequest request, HttpServletResponse response) {  
3. 
4.        try {  
5.            InputStream in = request.getInputStream();  
6.              
7.            BufferedReader br = new BufferedReader(new InputStreamReader(in));  
8.            StringBuffer data = new StringBuffer();  
9.            String line = null;  
10.            while((line = br.readLine()) != null){  
11.                data.append(line);  
12.            }  
13.            logger.debug(data);  
14.            clientMgr.doRegistManager(data.toString());  
15.// 设置返回状态             
16.response.setStatus(HttpServletResponse.SC_OK);  
17.        } catch (Exception ex) {  
18.            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);  
19.            logger.warn("", ex);  
20.        }  
21.        return null;  
22.    } 
分享到:
评论

相关推荐

    httpt:一个简单的轻量级HTTP测试服务器docker映像

    httpt例子version : ' 3.4 'services : httpt : image : ghcr.io/a-cordier/httpt:latest ports : - 8888:8080 HTTPT是开发人员门户团队用于集成测试和调试目的的简单测试服务器。可用端点/status/{statusCode} 对于...

    httpt-2.4.25的tar包基础上做成了iso镜像

    httpt-2.4.25的tar包基础上做成了iso镜像

    xheditor+jquery进度条

    在IT行业中,编辑器是开发过程中不可或缺的一部分,用于创建、编辑和格式化代码或文本。XHEditor是一款基于JavaScript的富文本编辑器,它结合了jQuery库,为用户提供了一个功能强大的在线文本编辑解决方案。在...

    Python库 | navi%20pro-6.1.4.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:navi%20pro-6.1.4.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    新入门node.js必须要知道的概念(必看篇)

    一、对于一个刚入门node.js的朋友来说,一定要了解一些基础概念: 今年我正式进入社会后,发现自己所知道的IT方面的知识,真的只是牛毛,原来人外有人,山外有山,还需要继续努力。下面是一些我的自学习心得,发出来...

    计算机网络精讲视频教程

    共105个课时,讲计算机网络基础,对你绝对非常有帮助!! 1、课程介绍 2、局域网 3、Internet和广域网 4、规划ip地址和MAC地址。。。。。 55、TCP和UDP的应用场景...79、HTTPT协议和网址。。。。105、创建临时无线网络

    基于Go语言实现的简单的分布式存储.zip

    基于Go语言实现的简单的分布式存储...main.go // 测试使用,其中模拟了数据库└─ppcache // 主要目录 ├─byteview.go // 并发读时的副本 ├─cache.go // 缓存操作实体 ├─http.go // httpt通信 ├─peers.go

Global site tag (gtag.js) - Google Analytics