zoukankan      html  css  js  c++  java
  • c# 针对SAP服务通讯

    对于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++ 顺序表实现
    C++ 第三十四天
    C++ 第三十三天
    机器学习相关- 学习资料收集
    【Debian 8.8】Java 8 安装以及环境变量配置
    算法导论(第三版)练习 1.2-1 ~ 1.1-3
    条款33: 明智地使用内联
    条款32: 尽可能地推迟变量的定义
    条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
    【Nginx】进程模型
  • 原文地址:https://www.cnblogs.com/liuyunsheng/p/3747517.html
Copyright © 2011-2022 走看看