c# 针对SAP服务通讯

对于sap完全没有概念。 不知道是什么,也不想了解过多。还是像针对一个技能好好的研究一下。

年前的一个项目遇到c#调用SAP来实现一些业务逻辑对于我这个门外汉确实有点摸不着头闹。捋顺一下思路。 、

结果发现SAP提供的服务是一个wsdl这玩应TTMD的熟了。 也不知道是webservice还是wcf管他呢。
咱们就用通用的网络方式传递就好了。

代码如下:测试OK

需要大家注意的是在SAP中使用的UserAgent不同我们设置的内容也需要跟着改变。 否则获取不倒数据。

不难看出掉SAP服务没什么技术难度。 主要还是在于传递的消息头信息。以及其他的相关辅助信息。这些信息没设置错基本上就OK了。

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

private
string GetHtml(string
url, byte[] byteRequest, NetworkCredential nc)

{

  try

  {

    var
httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

    httpWebRequest.KeepAlive = false;

    httpWebRequest.UserAgent = "Apache-HttpClient/4.1.1 (java 1.5)";

    httpWebRequest.ContentType = " text/xml;charset=UTF-8";

    httpWebRequest.Accept = "gzip,deflate";

    httpWebRequest.ContentLength = byteRequest.Length;

    httpWebRequest.Method = "Post";

    httpWebRequest.Credentials = nc;

    httpWebRequest.Headers.Add("SOAPAction", "http://sap.com/xi/WebService/soap1.1");

    var
stream = httpWebRequest.GetRequestStream();

    stream.Write(byteRequest, 0, byteRequest.Length);

    stream.Close();

    var
httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

    var
responseStream = httpWebResponse.GetResponseStream();

    if
(responseStream != null)

    {

      var
streamReader = new
StreamReader(responseStream, Encoding.UTF8);

      var
html = streamReader.ReadToEnd();

      streamReader.Close();

      responseStream.Close();

      return
html;

    }

    return
string.Empty;

  }

  catch
(WebException ex)

  {

    log.Error(ex.Message);

    return
"Get Sap Service Error!";

  }

  catch
(Exception e)

  {

    log.Error(ex.Message);

    return
"Get Sap Service Error!";

  }

}

 分享是种美德,要提倡!

时间: 2024-08-03 22:20:52

c# 针对SAP服务通讯的相关文章

针对Apache服务的优化与配置(一)——日志文件优化

针对Apache服务的优化与配置 日志分割 日志文件分析 Apache压缩 设置Apache缓存 一.日志分割 Apache日志文件默认存放位置: /var/log/httpd/ 默认分为access log和error log 实施日志分割的目的: 随着网站的访问量增加,默认情况下Apache的单个日志文件也会越来越大. 日志文件占用磁盘空间很大 查看相关信息不方便 进行日志分割的方式: 使用自带的rotatelogs分割工具实现(循环读取日志文件) 第三方工具cronolog分割 1-1 r

TCP服务通讯

一.TCP 1.TCP又叫做套接字,传输安全,速度慢. TCP和UTP是网络的传输协议,跟java没什么关系,没有说用java做的客户端必须连接java做的服务器,我们可以用c和c++做客户端,直接连接到java做的服务器都可以,只要都遵守TCP的协议规则就行. 2.TCP的连接 TCP有三次握手的规则,三次握手是? TCP连接服务器的时候要来来回回三次询问,第一次问服务器是否存在网络是否通畅,服务器回答我存在,第二次询问服务器是否能进行连接啊,服务器说可以连接.第三次就是完成连接.TCP连接模

三十、【C#.Net开发框架】WCFHosting服务主机的利用WCF服务通讯和实现思路

回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://pan.baidu.com/s/1eQCc69G        前言:以前的系统都是直接客户端直连数据库服务器,后来考虑到服务器的安全性.数据库连接数的限制.分布能力差等问题,特别是那几年中间件.SOA.ESB等炒得比较火,为了跟上时代脚本有必要开发一个中间件,把后台逻辑业务在中间件中运行.刚开始考虑过WebS

angular2 组件之间通讯-使用服务通讯模式 2016.10.27 基于正式版ng2

工作中用到ng2的组件通讯 奈何官方文档言简意赅 没说明白 自己搞明白后 整理后分享下 rxjs 不懂的看这篇文章 讲很详细 http://www.open-open.com/lib/view/open1462525661610.html 以下是服务代码 1 import { Injectable } from '@angular/core'; 2 import {Subject}from"rxjs/Subject"; 3 @Injectable() 4 export class CS

Udp客户端与服务通讯

使用UDP与服务端通讯时候,同样需要先启用udp服务端监控,当服务端启动成功,在启动客户端 首先UDP服务端类,代码如下: public class UdpServerTest { public void BeginUdpServer() { UdpClient client = null; string receiveString = null; byte[] receiveData = null; IPEndPoint remotePoint = new IPEndPoint(IPAddre

UiPath针对SAP的输入技巧

我观察到在SAP中不论是SimulateType,还是SendWindowMessages,Type Into的输入速度都很慢(是逐个字符输入的).如果只是一次两次的输入倒也没什么,但如果是需要批量多次输入的场景,就有可能花费很多时间. 而且在某些特定界面里SimulateType和SendWindowMessages有输入不完整的潜在风险,不得不在输入完后检查已输入的内容是否正确,不正确的话还得重新输入一遍.这无疑增加了开发的工作量. 为此,我想出的一个替代方法如下: 1.将要输入的文本内容写

SAP 服务确认的BAPI参考

服务确认的相关BAPI如下: BAPI_ENTRYSHEET_CHECK Check Service Entry SheetBAPI_ENTRYSHEET_CREATE Create Entry SheetBAPI_ENTRYSHEET_DELETE Delete Entry SheetBAPI_ENTRYSHEET_GETDETAIL Display Detailed Data on Entry SheetBAPI_ENTRYSHEET_GETLIST List Entry SheetsBAP

教你分析针对SSH服务的暴力破解日志

你所看到的SSH日志,显示出时间.IP.端口,一条重复着一条,总是那么单调,仅凭日志展现的这些信息,远不能判定故障真想,怎么办?

.Net Core开源通讯组件 SmartRoute(服务即集群)

SmartRoute是基于Dotnet Core设计的可运行在linux和windows下的服务通讯组件,其设计理念是去中心化和零配置即可实现服务通讯集群.SmartRoute是通过消息订阅的机制实现服务与服务之间的通讯,它可以让广播网段内所有服务器上的应用自动构建通讯集群: 而通讯集群完全是SmartRoute自动构建并不需要进行任何配置或安装中间服务.通过这种全新的通讯开发方式可以让开发者更轻松和简单地构建基于服务的集群通讯应用. SmartRoute的发展目标   智能集成服务通讯交互 不