java URL实现调用其他系统发送报文并获取返回数据

Posted 程序员都是野生动物

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java URL实现调用其他系统发送报文并获取返回数据相关的知识,希望对你有一定的参考价值。

 

    模拟本系统通过Url方式发送报文到目标服务器,并获取返回数据:(实现类)

 1 import java.io.BufferedOutputStream;
 2 import java.io.BufferedReader;
 3 import java.io.InputStream;
 4 import java.io.InputStreamReader;
 5 import java.io.OutputStream;
 6 import java.io.OutputStreamWriter;
 7 import java.net.URL;
 8 import java.net.URLConnection;
 9 
10 public class BlazeSao {
11 
12     public static void callBlaze(String url ,String data) throws Exception{
13         URL u = new URL(url);
14         System.out.println("建立链接....");
15         //获取连接对象
16         URLConnection uc = u.openConnection();
17         uc.setDoOutput(true);
18         //获取输出流对象
19         OutputStream raw = uc.getOutputStream();
20         OutputStream buffered = new BufferedOutputStream(raw);
21         OutputStreamWriter out = new OutputStreamWriter(buffered, "UTF-8");
22 
23         System.out.println("发送报文:"+data);
24         out.write(data);
25 
26         out.flush();
27         System.out.println("关闭连接");
28         out.close();
29         //获取到返回数据的输入流
30         InputStream is = uc.getInputStream();
31         BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
32         String line = "";
33         StringBuffer blzRspXml = new StringBuffer();
34         System.out.println("获取返回数据:");
35         while((line = br.readLine()) != null){
36             //读取返回数据,分行读取
37             System.out.println(line.trim());
38             blzRspXml.append(line.trim());
39         }
40     }
41 
42     public static void main(String args[]){
43         
44         //目标服务器地址
45         String url1 = "http://10.14.30.242:9080/RES/Rule";
46         //发送的报文
47         String data1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><CardRequest><SEQ_TIME_STAMP>2014325170152799504</SEQ_TIME_STAMP><TYPE>1</TYPE><v_101>-999998</v_101><v_102>0.002740</v_102><v_109>111.11</v_109></CardRequest>";
48         try {
49             BlazeSao.callBlaze(url1,data1);
50         } catch (Exception e) {
51             e.printStackTrace();
52         }
53     }
54 
55 }

输出日志:

建立链接....
发送报文:<?xml version="1.0" encoding="UTF-8"?><CardRequest><SEQ_TIME_STAMP>2014325170152799504</SEQ_TIME_STAMP><TYPE>1</TYPE><v_101>-999998</v_101><v_102>0.002740</v_102><v_109>111.11</v_109><v_110>111.11</v_110</CardRequest>
关闭连接
获取返回数据:
<ResponseData>
<R_001>S5=-9999.0</R_001>
<R_002>T</R_002>
<R_003>Y</R_003>
<R_004></R_004>
<R_005></R_005>
<R_006>S5_B017_others</R_006>
</ResponseData>

 

以上是关于java URL实现调用其他系统发送报文并获取返回数据的主要内容,如果未能解决你的问题,请参考以下文章

mock 支持socket报文吗

Java代码发送Http请求

在java中如何实现http/post/xml发送数据报文?麻烦高手赐教!

java使用POST发送soap报文请求webservice返回500错误解析

http如何实现同时发送文件和报文(用java实现)

linux服务器接收发送报文