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

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

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

代码如下:测试OK

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

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

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!";
  }
}

 分享是种美德,要提倡!

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

  1. 分布式服务通讯框架XXL-RPC

    <分布式服务通讯框架XXL-RPC>    一.简介 1.1 概述 XXL-RPC 是一个分布式服务通讯框架,提供稳定高性能的RPC远程服务调用功能.现已开放源代码,开箱即用. 1.2 特 ...

  2. [Abp vNext微服务实践] - 服务通讯

    简介 服务通讯是微服务架构中必不可少的功能,服务通讯的效率决定了微服务架构的优略.常用的微服务通讯策略有两种,分别是rpc.http,其中rpc以gRpc框架为代表使用者最多.abp vNext微服务 ...

  3. 针对WebService服务,客户端调用时报序列化的最大项数maxItemsInObjectGraph超过65536问题

    今天在使用webservice服务时候,报异常"The InnerException message was 'Maximum number of items that can be ser ...

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

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

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

    工作中用到ng2的组件通讯 奈何官方文档言简意赅 没说明白 自己搞明白后 整理后分享下 rxjs 不懂的看这篇文章 讲很详细 http://www.open-open.com/lib/view/ope ...

  6. TCP服务通讯

    一.TCP 1.TCP又叫做套接字,传输安全,速度慢. TCP和UTP是网络的传输协议,跟java没什么关系,没有说用java做的客户端必须连接java做的服务器,我们可以用c和c++做客户端,直接连 ...

  7. webservice 针对WebService服务,客户端调用时报序列化的最大项数maxItemsInObjectGraph超过65536问题

    今天在使用webservice服务时候,报异常“The InnerException message was 'Maximum number of items that can be serializ ...

  8. Udp客户端与服务通讯

    使用UDP与服务端通讯时候,同样需要先启用udp服务端监控,当服务端启动成功,在启动客户端 首先UDP服务端类,代码如下: public class UdpServerTest { public vo ...

  9. yarn关于app max attempt深度解析,针对长服务appmaster平滑重启

    在YARN上开发长服务,需要注意fault-tolerance,本篇文章对appmaster的平滑重启的一个参数做了解析,如何设置可以有助于达到appmaster平滑重启. 在yarn-site.xm ...

随机推荐

  1. 仿QQ大战—服务器的搭建(ServerSocket)

    ServerSocket(服务器): ServerSocket是JAVA中提供的用于建立服务器的类: 在客户/服务器通信模式中, 服务器端需要创建监听端口的 ServerSocket, ServerS ...

  2. Select Top在七种数据库中的使用方法(包含mysql)

    1. Oracle数据库 SELECT * FROM TABLE1 WHERE ROWNUM<=N 2. Infomix数据库 SELECT FIRST N * FROM TABLE1 3. D ...

  3. MySQL二进制安装

    前提 version mysql-5.5 platform centos6.x 添加用户 useradd -M -s /sbin/nologin mysql 安装需要的包 yum -y install ...

  4. WampServer数据库导入sql文件

    WampServer中MySQL如何导入sql文件: http://jingyan.baidu.com/article/3c343ff7f9c7940d377963c0.html

  5. Javascript中闭包问题(转载)

    学习Javascript闭包(Closure)   作者: 阮一峰 日期: 2009年8月30日 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现 ...

  6. AJAX + WebService 实现文件上传

    1. 界面HTML <p >上传文件: <input id="zfiles" type="file" name="file" ...

  7. C#高级编程笔记 Delegate 的粗浅理解 2016年9月 13日

    Delegate [重中之重] 委托 定义一:(参考)http://www.cnblogs.com/zhangchenliang/archive/2012/09/19/2694430.html 完全可 ...

  8. SQL/T-SQL实例参考

    ,D.[Score] B_Score ,'Distince'= CASE WHEN C.Score > D.Score THEN C.[Score] - D.[Score] WHEN C.Sco ...

  9. android 获取Datepicker日期

    1.使用的Android5.0系统,实现上面效果使用了alertdialog 2.布局文件: layout_dataselect <?xml version="1.0" en ...

  10. JavaScript方法——call和apply

    1.相同点: a) 产生的效果或作用完全相同: b) 至少有一个参数: c) 第一个参数必须有且是一个对象(Object),因为就是这个家伙偷懒. 2.不同点: 传递参数的方式. 前提: 1.有两个对 ...