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>
时间: 2024-09-29 18:44:09

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

利用sendmsg和recvmsg来指定发送接口或者获取接收数据接口

前言 sendmsg和recvmsg函数是一对相对下层的套接字发送.接受函数.通过这对函数,我们可以设置或者取得数据包的一些额外的控制信息,这些信息中比较常用的就是本文要介绍的发送.接受接口信息.通过这对函数,我们可以指定一个数据包发送的时候使用的接口(网卡)或者获得一个接受到数据包的来源接口. sendmsg函数使用 sendmsg(fd, &mhdr, 0)函数中最重要的就是msghdr结构体.其定义如下: struct msghdr { void *msg_name; #发送地址 sock

Android调用系统相机获取返回数据

由于项目需要调用相机,实现上传照片,例如微博,微信中功能.Android中可以非常轻松的调用系统相机,并返回Bitmap数据,但有一点不足,它返回的Bitmap尺寸很小,清晰度不够,这问题将稍后解决.下面通过代码演示. 1.界面布局 res/layout 定义一个简单布局,一个Button和ImageView,分别用于跳转系统相机Activity和显示系统相机返回数据. 1 <LinearLayout xmlns:android="http://schemas.android.com/ap

Android利用异步任务AsyncTask发送post请求获取json数据

AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 使用的优点: l  简单,快捷 l  过程可控 使用的缺点: l  在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来. 2 )Handler异步实现的原理和适用的优缺点 AsyncTask介绍 Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理.

java后台发送请求并获取返回值(续)

在java后端发送请求给另一个平台,从而给前端实现 "透传"的过程中,出现:数据请求到了并传到了前端,但是控制台打印时中文显示Unicode码而前端界面中中文显示不出来!!!开始怀疑是编码格式或透传过程中处理的问题,将编码格式进行了设置并查资料了解了一下透传过程中代码的处理方法,虽然最后发现是前后端定义的json串的属性名称不一致导致(后端传输数据中属性名label写成了lable...),但在此还是记录一下"透传"处理过程中处理数据流的三种方式. 主要是介绍经常用

jQuery表单 Ajax向PHP服务端发送文件请求并返回数据

ImageAjaxUpLoad.htm <!DOCTYPE html> <head> <meta charset='utf-8'> <title></title> <script src="jquery-1.6.1.min.js" type="text/javascript"></script> <script src="jquery.form.js" ty

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

本文使用JAX-WS2.2编译webservice,并使用HttpUrlConnection的POST方式对wsdl发送soap报文进行请求返回数据, 对错误Server returned HTTP response code: 500 的解决方法进行简单分析. 问题描述: 由于课程需要博主需要自己写一个webservice并且通过soap进行请求, 于是使用JAX-WS编译了下面java代码生成webservice服务 生成webservice的java代码: [java] view plai

在后台程序中发送http请求并获取响应数据

一,在后台程序中发送http请求获取响应数据 1)以 http://libs.baidu.com/jquery/2.0.0/jquery.min.js 为例 二, 1) String result=""; BufferedReader in = null; URL url = null; try { url = new URL("http://libs.baidu.com/jquery/2.0.0/jquery.min.js"); } catch (Malforme

RMI - Java远程方法调用

一.入门篇 Java RMI指的是远程方法调用(Remote Method Invocation). 它是一种机制, 能够让不同操作系统之间程序实现方法调用. 比如: 一台电脑上的Java程序可以通过RMI调用另一台电脑上的方法(EJB底层就是使用RMI). 二.RMI和webservice RMI是在TCP协议上传递可序列化的Java对象, 只能用在Java虚拟机上, 客户端和服务端必须都是Java. webservice是在http协议上传递xml文件, 它与语言和平台无关, 可以在异构系统

(转) c/c++调用libcurl库发送http请求的两种基本用法

libcurl主要提供了两种发送http请求的方式,分别是Easy interface方式和multi interface方式,前者是采用阻塞的方式发送单条数据,后者采用组合的方式可以一次性发送多条数据 一.Easy interface libcurl的easy interface是最基本的用法,简要流程为: 1.在主线程中调用curl_global_init(CURL_GLOBAL_ALL)初始化 2.调用curl_easy_init获取一个句柄: 3.调用curl_easy_setopt函数