前言

接口开发完成,先自己测试通过。

常用的测试工具有SoapUI,Postman,XmlSpy 等。

但有时接口调用方不会调用,就直接咬定接口是有问题的,接口是不通的。甚至会说接口只支持测试工具,不支持他们的开发语言。互相扯皮很伤感情,这时需要一段能运行出正常结果的示例代码。


一、SAP PI PO 是什么?

What is SAP Process Orchestration?
SAP Process Orchestration software supports custom process applications and integration scenarios. As the process orchestration layer of SAP's Business Technology Platform, it can help you improve process efficiencies and respond to changing demands.

SAP Process Orchestration
Model, implement, integrate, and monitor custom process applications and integration scenarios – quickly and flexibly. By creating more streamlined, adaptable processes, you can innovate faster and respond better to changing demands.

  • On-premise deployment
  • Faster modeling and deployment of business process applications
  • Lower costs related to integrating heterogeneous systems
  • Improved data quality and reduced data entry effort

二、完整JAVA示例代码,运行通过

package com.rest;
/** Java 调用SAP PI PO 的Rest JSON接口* https://mkyong.com/java/how-to-get-http-response-header-in-java/* https://www.jianshu.com/p/375be5929bed
*/
import java.io.IOException;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Base64;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.*;public class RunREST {static final String kuser = "USER"; //用户名 请注意用户 密码一定要正确,否则会报 401 unauthorizedstatic final String kpass = "PWD";  //密码static class MyAuthenticator extends Authenticator {public PasswordAuthentication getPasswordAuthentication() {return (new PasswordAuthentication(kuser, kpass.toCharArray()));}}public static String httpClientWithBasicAuth(String username, String password, String uri, JSONObject param) {try {//创建HttpClientBuilderHttpClientBuilder httpClientBuilder = HttpClientBuilder.create();CloseableHttpClient closeableHttpClient = httpClientBuilder.build();HttpPost httpPost = new HttpPost(uri);httpPost.addHeader("Content-Type", "application/json; charset=UTF-8"); //UTF-8 防中文乱码//添加Http头信息httpPost.addHeader("Authorization","Basic " + Base64.getUrlEncoder().encodeToString((username + ":" + password).getBytes()));httpPost.setEntity(new StringEntity(param.toString(), Charset.forName("UTF-8"))); //UTF-8 防中文乱码String result = "";HttpResponse httpResponse = null;HttpEntity entity = null;try {httpResponse = closeableHttpClient.execute(httpPost);entity = httpResponse.getEntity();if (entity != null) {result = EntityUtils.toString(entity);}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}String httpcode = String.valueOf(httpResponse.getStatusLine().getStatusCode());System.out.println("Response.getStatusLine():" + httpResponse.getStatusLine());System.out.println("Http status:" + httpcode);Header[] headers = httpResponse.getAllHeaders();for (Header header : headers) {System.out.println("Key:" + header.getName() + " ,Value:" + header.getValue());}System.out.println(Arrays.toString(httpResponse.getAllHeaders()));//关闭连接closeableHttpClient.close();return result;} catch (Exception e) {return "Error.";}}public static void main(String[] args) throws Exception {String url = "http://<host>:<port>/RESTAdapter/Endpoint"; //实际的接口地址, Endpoint的值可以在通道中找到String a = "{......}"; //实际要发送的JSONJSONObject json = JSONObject.parseObject(a);System.out.println("JSON string = " + json.toString());System.out.println(httpClientWithBasicAuth(kuser, kpass, url, json));}
}

运行结果

response.getStatusLine():HTTP/1.1 200 OK
Http status:200
Key:server ,Value : SAP NetWeaver Application Server 7.49 / AS Java 7.50
Key:date ,Value : Fri, 09 Jul 2021 02:15:44 GMT
Key:content-type ,Value : application/json; charset=UTF-8
Key:set-cookie ,Value : saplb_*=(J2EE1265820)1265850; Version=1; Path=/
Key:set-cookie ,Value : JSESSIONID=gvf8tv92nZTiKlbEo0R8kP9voAyJegG6UBMA_SAPRTgFEfSYnXZ-W5mogIkB44CP; Version=1; Path=/
[server: SAP NetWeaver Application Server 7.49 / AS Java 7.50, date: Fri, 09 Jul 2021 02:15:44 GMT, content-type: application/json; charset=UTF-8, set-cookie: saplb_*=(J2EE1265820)1265850; Version=1; Path=/, set-cookie: JSESSIONID=gvf8tv92nZTiKlbEo0R8kP9voAyJegG6UBMA_SAPRTgFEfSYnXZ-W5mogIkB44CP; Version=1; Path=/]

Java 调用SAP PI PO 的Rest JSON接口相关推荐

  1. SAP PI/PO 视频,自己录制

    SAP PI/PO课程讲解(自制) 大家有需要去bilibi看把 [SAP PI/PO课程讲解(自制)] https://www.bilibili.com/video/BV1me4y1r788/?sh ...

  2. SAP PI PO JDBC接口培训视频

    SAP PI PO JDBC接口培训视频 XML Document Format for the Message Protocol XML SQL Format You can modify one ...

  3. SAP PI PO 消息监控器 SXI_MONITOR 报文相关数据库表介绍 SXMSPMAST SXMSCLUP

    SAP PI PO 消息监控器 SXI_MONITOR 报文相关数据库表介绍 SXMSCLUP  Cluster - Compressed Message Payload Property SXMSC ...

  4. JAVA调用SAP接口地址_Java以webservice方式调用SAP接口传输数据

    Java以webservice方式调用SAP接口传输数据,在SAP中生成 会计凭证/冲销会计凭证 1.生成会计凭证(已完成) 2.冲销会计凭证(以下教程截图以该接口为例) Java调用sap的webs ...

  5. 【实测避坑】SAP PI/PO系统 配置证书调用https地址

    博主内容在此链接原文上修改,避免初次配置https的时候踩到大坑,目前发现知乎,CSDN等相关文章中均未提及,博主踩坑花了2天时间才找到原因,未避免后续人员踩坑,在此文中特别补充. 在原文的基础上进行 ...

  6. SAP PI/PO登录使用及基本功能简介

    1. 什么是PI/PO XI/PI/PO 都是SAP推出的中间件平台,用于多系统接口统一(类似于网上的ESB系统) XI/PI/PO 演变历程:SAP PO 简介:XI.PI.PO的关系与区别 2. ...

  7. java调用sap系统wsdl_Java调用Axis2用SAP WSDL生成的Stub文件

    3.Java调用Axis2用SAP WSDL生成的Stub文件 ①建立JavaWeb工程,将axis的相关jar导入至lib文件 ②将第2步生成的Stub类文件放入项目包里,再新建1个TEST测试类 ...

  8. java 调用SAP RFC函数错误信息集锦

    RFC接口调用SAP如果有异常会通过com.sap.mw.jco.JCO$Exception: 抛出异常 在开发中遇到的异常有如下 用户名密码可能是错误或者用户无权限,确认用户,必要时联系SAP负责人 ...

  9. java调用sap接口_(二)通过JAVA调用SAP接口 (增加一二级参数)

    /*** Created by gang.xu01@hand-china.com on 2018/12/4*/ public classMultiFromSAP {/*** description: ...

  10. JAVA调用SAP ODATA服务

    梳理一下,JAVA调下SAP ODATA服务过程中遇到的一些坑. 1.(401) 未经授权: 解决方法:将用户名密码加密后,添加到HTTP HEADER中. String auth = "Z ...

最新文章

  1. 微软雷德蒙德和伦敦地区掀起新一轮裁员 涉及数百人
  2. 飞桨 AI Studio 课程学习 可以成为一名优秀的算法工程师
  3. 局部钩子能防全局钩子吗_Django局部钩子和全局钩子
  4. B系列台达服务器解密码步骤,台达HMI解密,DOP-A解密,DOP-B解密,文件密码解密
  5. 疑似华为P50系列7月29日发布:麒麟9000旗舰芯片加持
  6. Luogu4725 【模板】多项式对数函数(NTT+多项式求逆)
  7. java 守护进程 linux_Java使用appache deamon实现linux守护进程
  8. sql机器学习服务_机器学习服务–在SQL Server中配置R服务
  9. SELinux系列(七)——SELinux安全上下文的修改和设置(chcon和restorecon命令)
  10. linux安装gd,linux下 安装GD
  11. 多线程中,static函数与非static函数的区别?
  12. SolidWorks2010
  13. ebay 后台HTML有尺寸宽度要求吗,Ebay后台有哪些常用的操作页面?
  14. html文件命名首字母大写,HTML制作中的文件夹及文件命名规范(一)
  15. 失败的教训,总结下三个多月的考研历程(最终发现调剂非全复试成功了)
  16. 工作内存与主内存是什么,硬件层面的存储架构是什么样,线程的实现原理是什么
  17. 手机电池-市场现状及未来发展趋势
  18. Java 公历转农历,然后农历减一年(或者几天或者任意天),再把这个日期转成公历...
  19. 笔记本采取拨号上网有线连接校园网,开启热点的方法
  20. AD画PCB时如何修改编辑区(黑色部分)

热门文章

  1. 【雷达信号处理基础】第1讲 -- 雷达系统概述
  2. esp8266教程:esp8266使用mqtt连接百度智能云
  3. ESP8266使用教程之初识
  4. BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草
  5. Spring Bean生命周期总结
  6. 自动将word转成双层pdf
  7. 6. 生信技能树——TCGA癌症数据1
  8. Unity3D游戏框架设计
  9. 【微信小程序开发零基础入门】——微信小程序入门
  10. Nginx 集群和IP反向代理