# 接出調用示例
## **說明**
通訊前置報文、接出配置完成后,其使用方式主要包含兩種情形,一是配置接入,在接入的流程中配置使用接出和報文組包、解包;二是 通過接口的方式在其他業務系統調用前置服務的組包、解包、接出通訊。
因此,使用通訊前置進行接出通訊時有兩種配置方案:
- 第一:配置一個通訊接入,協議類型可以配置一個最簡單的http協議,在該通訊接入有發出接出
- 第二:使用api調用通訊服務的接口進行通訊接出
## **接口調用**
#### **1、接出調用**
```
<pre class="calibre29">```
@<span class="token5">SuppressWarnings</span><span class="token1">(</span><span class="token3">"unchecked"</span><span class="token1">)</span>
public Object <span class="token5">P_callExternSys</span><span class="token1">(</span>String sysid<span class="token1">,</span> String trancode<span class="token1">,</span> Object request<span class="token1">)</span> <span class="token1">{</span>
Map<span class="token"><</span>String<span class="token1">,</span> Object<span class="token">></span> mapResp <span class="token">=</span> <span class="token4">null</span><span class="token1">;</span>
<span class="token4">try</span> <span class="token1">{</span>
Map<span class="token"><</span>String<span class="token1">,</span> Object<span class="token">></span> mapReq <span class="token">=</span> <span class="token4">new</span> <span class="token5">LinkedHashMap</span><span class="token"><</span>String<span class="token1">,</span> Object<span class="token">></span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
mapReq<span class="token1">.</span><span class="token5">put</span><span class="token1">(</span><span class="token3">"remote"</span><span class="token1">,</span> sysid<span class="token1">)</span><span class="token1">;</span><span class="token6">// YFE接出節點編碼</span>
mapReq<span class="token1">.</span><span class="token5">put</span><span class="token1">(</span><span class="token3">"transCode"</span><span class="token1">,</span> trancode<span class="token1">)</span><span class="token1">;</span><span class="token6">// 交易碼</span>
mapReq<span class="token1">.</span><span class="token5">put</span><span class="token1">(</span><span class="token3">"request"</span><span class="token1">,</span> request<span class="token1">)</span><span class="token1">;</span><span class="token6">// 參數</span>
<span class="token6">// 可以直接使用spring ioc注入</span>
RestTemplate restTemplate <span class="token">=</span> SpringContextHolder<span class="token1">.</span><span class="token5">getBean</span><span class="token1">(</span><span class="token3">"balancedTemplate"</span><span class="token1">)</span><span class="token1">;</span>
<span class="token6">// yfe的接出調用地址、需要注意是使用IP還是服務名調用</span>
String strUrl <span class="token">=</span> <span class="token3">"http://sca-commservice/yfasvc/yfeTransProc"</span><span class="token1">;</span>
mapResp <span class="token">=</span> restTemplate<span class="token1">.</span><span class="token5">postForObject</span><span class="token1">(</span>strUrl<span class="token1">,</span> mapReq<span class="token1">,</span> Map<span class="token1">.</span>class<span class="token1">)</span><span class="token1">;</span>
<span class="token4">return</span> mapResp<span class="token1">;</span>
<span class="token1">}</span> <span class="token4">catch</span> <span class="token1">(</span><span class="token5">Exception</span> ex<span class="token1">)</span> <span class="token1">{</span>
log<span class="token1">.</span><span class="token5">error</span><span class="token1">(</span><span class="token3">"error:"</span><span class="token1">,</span> ex<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token4">return</span> mapResp<span class="token1">;</span>
<span class="token1">}</span>
```
```
#### **2、解包調用**
```
<pre class="calibre29">```
@<span class="token5">SuppressWarnings</span><span class="token1">(</span><span class="token3">"unchecked"</span><span class="token1">)</span>
public Object <span class="token5">P_yfeUnpack</span><span class="token1">(</span>String system<span class="token1">,</span> String tardeNo<span class="token1">,</span> String tag<span class="token1">)</span> <span class="token1">{</span>
Map<span class="token"><</span>String<span class="token1">,</span> Object<span class="token">></span> mapResp <span class="token">=</span> <span class="token4">null</span><span class="token1">;</span>
<span class="token4">try</span> <span class="token1">{</span>
Map<span class="token"><</span>String<span class="token1">,</span> Object<span class="token">></span> mapReq <span class="token">=</span> <span class="token4">new</span> <span class="token5">LinkedHashMap</span><span class="token"><</span>String<span class="token1">,</span> Object<span class="token">></span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
mapReq<span class="token1">.</span><span class="token5">put</span><span class="token1">(</span><span class="token3">"system"</span><span class="token1">,</span> system<span class="token1">)</span><span class="token1">;</span>
mapReq<span class="token1">.</span><span class="token5">put</span><span class="token1">(</span><span class="token3">"transCode"</span><span class="token1">,</span> tardeNo<span class="token1">)</span><span class="token1">;</span>
mapReq<span class="token1">.</span><span class="token5">put</span><span class="token1">(</span><span class="token3">"request"</span><span class="token1">,</span> tag<span class="token1">)</span><span class="token1">;</span>
RestTemplate restTemplate <span class="token">=</span> SpringContextHolder<span class="token1">.</span><span class="token5">getBean</span><span class="token1">(</span><span class="token3">"balancedTemplate"</span><span class="token1">)</span><span class="token1">;</span>
String strUrl <span class="token">=</span> <span class="token3">"http://sca-commservice/yfasvc/yfeUnPackMsg"</span><span class="token1">;</span>
mapResp <span class="token">=</span> restTemplate<span class="token1">.</span><span class="token5">postForObject</span><span class="token1">(</span>strUrl<span class="token1">,</span> mapReq<span class="token1">,</span> Map<span class="token1">.</span>class<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span> <span class="token4">catch</span> <span class="token1">(</span><span class="token5">Exception</span> e<span class="token1">)</span> <span class="token1">{</span>
log<span class="token1">.</span><span class="token5">error</span><span class="token1">(</span><span class="token3">"error:"</span><span class="token1">,</span> e<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token4">return</span> mapResp<span class="token1">;</span>
<span class="token1">}</span>
```
```
#### **3、組包調用**
```
<pre class="calibre31">```
public Object <span class="token5">P_yfePack</span><span class="token1">(</span>String system<span class="token1">,</span> String tardeNo<span class="token1">,</span> Map kevalue<span class="token1">)</span> <span class="token1">{</span>
Map<span class="token"><</span>String<span class="token1">,</span> Object<span class="token">></span> mapReq <span class="token">=</span> <span class="token4">new</span> <span class="token5">LinkedHashMap</span><span class="token"><</span>String<span class="token1">,</span> Object<span class="token">></span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
mapReq<span class="token1">.</span><span class="token5">put</span><span class="token1">(</span><span class="token3">"system"</span><span class="token1">,</span> system<span class="token1">)</span><span class="token1">;</span>
mapReq<span class="token1">.</span><span class="token5">put</span><span class="token1">(</span><span class="token3">"transCode"</span><span class="token1">,</span> tardeNo<span class="token1">)</span><span class="token1">;</span>
mapReq<span class="token1">.</span><span class="token5">put</span><span class="token1">(</span><span class="token3">"request"</span><span class="token1">,</span> kevalue<span class="token1">)</span><span class="token1">;</span>
String respStr <span class="token">=</span> <span class="token3">""</span><span class="token1">;</span>
<span class="token4">try</span> <span class="token1">{</span>
RestTemplate restTemplate <span class="token">=</span> SpringContextHolder<span class="token1">.</span><span class="token5">getBean</span><span class="token1">(</span><span class="token3">"balancedTemplate"</span><span class="token1">)</span><span class="token1">;</span>
String strUrl <span class="token">=</span> <span class="token3">"http://sca-commservice/yfasvc/yfePackMsg"</span><span class="token1">;</span>
respStr <span class="token">=</span> restTemplate<span class="token1">.</span><span class="token5">postForObject</span><span class="token1">(</span>strUrl<span class="token1">,</span> mapReq<span class="token1">,</span> String<span class="token1">.</span>class<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span> <span class="token4">catch</span> <span class="token1">(</span><span class="token5">Exception</span> e<span class="token1">)</span> <span class="token1">{</span>
log<span class="token1">.</span><span class="token5">error</span><span class="token1">(</span><span class="token3">"error:"</span><span class="token1">,</span> e<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token4">return</span> respStr<span class="token1">;</span>
<span class="token1">}</span>
```
```