Core使用SAP Web Service
.Net Core在使用SAP的Web Service会遭遇到一些错误,貌似目前并不支持SAP中的Web Service,我们需要曲线实现下调用过程:
经测试,不再需要Framework项目中转,System.ServiceModel的几个Nuget升级到最新版即可。现在生成的代码已经有所差异了,简单的更改即可使用。

- 使用Framework的项目来“添加服务引用”,

- 找到生成目录下的Reference.cs文件并打开

- 因该命名空间已经是SAPInterface.FAChange3下了,所以移除掉该文件中所有的"SAPInterface.FAChange3."字样。
- 文件中我们看到有个接口与类的名称一样,这是错误的。我们给接口名称前面增加I,改为IZFAMS_AS02。

- 修改掉以下几处应该使用接口的内容:
- 将该文件保存并拷贝到Core项目中,修改命名空间为Core的命名空间
- 调用该文件,示例方法:
public class TransferWsR
{
private ZFAMS_ABT1NChannel callClient { get; set; }
public TransferWsR()
{
// 创建 HTTP 绑定对象
var binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
var appSection = IocManager.Instance.Resolve<IConfiguration>().GetSection("AppSettings");
// 根据 WebService 的 URL 构建终端点对象
var wsUrl = appSection["SAPWsTransferUrl"];
var endpoint = new EndpointAddress(wsUrl); // 创建调用接口的工厂,注意这里泛型只能传入接口
var factory = new ChannelFactory<ZFAMS_ABT1NChannel>(binding, endpoint);
factory.Credentials.UserName.UserName = appSection["SAPUserName"];
factory.Credentials.UserName.Password = appSection["SAPPassword"];
// 从工厂获取具体的调用实例
callClient = factory.CreateChannel();
callClient.OperationTimeout = new TimeSpan(, , );
} public TransferOutput DoTransfer(TransferInput input)
{
var rq = new ZFAMS_ABT1NRequest();
var data = new ZFAMS_ABT1NInput
{
IT_ABT1N = new ZST_ABT1N[]
{
AutoMapper.Mapper.Map<ZST_ABT1N>(input)
}
};
rq.ZFAMS_ABT1N = data;
try
{
var rp = callClient.ZFAMS_ABT1N(rq);
var result = rp.ZFAMS_ABT1NResponse.ET_RETURN.FirstOrDefault();
if (result == null)
{
throw new Exception("调用结果为Null!");
} return AutoMapper.Mapper.Map<TransferOutput>(result); }
catch (Exception ex)
{ throw ex;
} }
}
Core使用SAP Web Service的更多相关文章
- SAP Web Service简介与配置方法
[版权声明]本文为博主原创文章,转载请在明显位置注明出处. 一. SAP Web Service简介 二. SAP Web Service配置准备工作 1. 通过RZ10配置服务器名称和其他参数 2. ...
- [SAP] 外部系统调用SAP web service用户验证的简单方法
场景: 一个Java系统调用SAP系统提供的web service,除了根据WSDL生成的代理类,调用相应方法,传入相应参数外,还等需要使用SAP提供的用户信息进行身份验证,最简单的方法是在soap请 ...
- 工作笔记 | Visual Studio 调用 Web Service
引言 最近笔者负责ERP财务系统跟中粮集团财务公司的财务系统做对接,鉴于ERP系统中应付结算单结算量比较大,而且管理相对集中,ERP系统与中粮财务公司的支付平台系统对接,实现银企直联,将网银录入的环节 ...
- 如何在SAP CRM里创建和消费Web service
Created by Wang, Jerry, last modified on Dec 19, 2014 The following steps demonstrates how to expose ...
- 使用nodejs消费SAP Cloud for Customer上的Web service
Jerry在公众号文章C4C和微信集成系列教程里曾经使用nodejs去消费C4C提供的标准webservice. 看一个具体例子:C4C里Individual Customers可以维护Social ...
- UI5-学习篇-8-本地SAP WEB IDE开发
1.本地SAP WEB IDE下载 UI5-学习篇-3-Local SAP WEB IDE下载 2.启动Orion服务 解压SAP WEB IDE文件后,双击Orion应用程序启动服务,如下图: 服务 ...
- Spring 4 集成Apache CXF开发JAX-RS Web Service
什么是JAX-RS 在JSR-311规范中定义,即Java API for RESTful Web Services,一套Java API,用于开发 RESTful风格的Webservice. 工程概 ...
- 翻译-使用Spring调用SOAP Web Service
原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP ...
- 翻译-使用Spring WebService生成SOAP Web Service
原文链接:http://spring.io/guides/gs/producing-web-service/ 生成SOAP web service 该指南将带领你使用Spring创建一个基于SOAP的 ...
随机推荐
- 基于Spring框架怎么构建游戏玩法服务
说明:本篇阐述的问题,是基于前面的游戏服务器架构设计的. 问题 众所周知,Spring最擅长的领域是无状态服务的构建,而游戏(尤其是玩法部分)是有状态的.以棋牌游戏为例,玩法服务里面大概涉及以下两类对 ...
- 切换node版本,node-sass安装报错
一.问题 经常在开发过程中,会遇到切换node环境的情况,这时候切换之后,npm安装不了node-sass,有可能是之前把node-sass安装地址修改了,导致翻墙翻不了,所以安装不了. 二.解决 1 ...
- Linux中系统状态检测命令
1.ifconfig用于获取网卡配置与网络状态等信息,格式为:ifconfig [网络设备] [参数] 2.uname命令用于查看系统内核版本等信息,格式为:uname [-a] 查看系统的内核名称. ...
- React拾遗(下)
reconciliation(协调算法) react用于更新DOM的算法.基于两点假设,实现了一个启发的O(n)算法: 两个不同类型的元素将产生不同的树. 通过渲染器附带key属性,开发者可以示意哪些 ...
- SQL-W3School-函数:SQL AVG() 函数
ylbtech-SQL-W3School-函数:SQL AVG() 函数 1.返回顶部 1. 定义和用法 AVG 函数返回数值列的平均值.NULL 值不包括在计算中. SQL AVG() 语法 SEL ...
- react图片自适应组件
import * as React from 'react'; import 'animate.css/animate.css' import {AutoImg} from "./style ...
- SVG动画示例
package com.loaderman.customviewdemo; import android.graphics.drawable.Animatable; import android.os ...
- svn add 命令 递归目录下所有文件
svn add 命令 递归目录下所有文件 摘自:https://blog.csdn.net/yefl007/article/details/46506281 即使被忽略了也可以使用此命令. svn a ...
- iOS的推送证书过期的处理
1.删除MAC上钥匙串访问中对应的推送证书.<根据过期日期看> 2.登录苹果开发者后台,revoke删除已过期推送证书(貌似会自己消失不用删除,具体记不清了...),然后为对应App ID ...
- k8s常可能问的问题
k8s常可能问的问题 1.为什么要用k8s 自我修复.pod水平自动伸缩.密钥和配置管理动态对应用进行扩容.缩容 服务发现.负载均衡 1.1.自我修复 比如误删pod后会自动创建,用 kind: Re ...


