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# 针对SAP服务通讯的更多相关文章
- 分布式服务通讯框架XXL-RPC
<分布式服务通讯框架XXL-RPC> 一.简介 1.1 概述 XXL-RPC 是一个分布式服务通讯框架,提供稳定高性能的RPC远程服务调用功能.现已开放源代码,开箱即用. 1.2 特 ...
- [Abp vNext微服务实践] - 服务通讯
简介 服务通讯是微服务架构中必不可少的功能,服务通讯的效率决定了微服务架构的优略.常用的微服务通讯策略有两种,分别是rpc.http,其中rpc以gRpc框架为代表使用者最多.abp vNext微服务 ...
- 针对WebService服务,客户端调用时报序列化的最大项数maxItemsInObjectGraph超过65536问题
今天在使用webservice服务时候,报异常"The InnerException message was 'Maximum number of items that can be ser ...
- 三十、【C#.Net开发框架】WCFHosting服务主机的利用WCF服务通讯和实现思路
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- angular2 组件之间通讯-使用服务通讯模式 2016.10.27 基于正式版ng2
工作中用到ng2的组件通讯 奈何官方文档言简意赅 没说明白 自己搞明白后 整理后分享下 rxjs 不懂的看这篇文章 讲很详细 http://www.open-open.com/lib/view/ope ...
- TCP服务通讯
一.TCP 1.TCP又叫做套接字,传输安全,速度慢. TCP和UTP是网络的传输协议,跟java没什么关系,没有说用java做的客户端必须连接java做的服务器,我们可以用c和c++做客户端,直接连 ...
- webservice 针对WebService服务,客户端调用时报序列化的最大项数maxItemsInObjectGraph超过65536问题
今天在使用webservice服务时候,报异常“The InnerException message was 'Maximum number of items that can be serializ ...
- Udp客户端与服务通讯
使用UDP与服务端通讯时候,同样需要先启用udp服务端监控,当服务端启动成功,在启动客户端 首先UDP服务端类,代码如下: public class UdpServerTest { public vo ...
- yarn关于app max attempt深度解析,针对长服务appmaster平滑重启
在YARN上开发长服务,需要注意fault-tolerance,本篇文章对appmaster的平滑重启的一个参数做了解析,如何设置可以有助于达到appmaster平滑重启. 在yarn-site.xm ...
随机推荐
- 设置 github 帐号user.name和邮箱user.email
git config --global user.name username git config --global user.email username@email.com
- Windows 新装进阶操作指南
Windows禁用CTRL+Space切换输入法 注册表打开HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000010 把Key Mo ...
- npm命令教程
教程:http://www.runoob.com/nodejs/nodejs-npm.html 常用命令:http://www.cnblogs.com/PeunZhang/p/5553574.html
- icon图标
http://images2015.cnblogs.com/blog/575577/201609/575577-20160901194344636-1596119396.png http://im ...
- 09 Object
Object 在看 ES6 Object的时候,我发觉ES5 Object 的更新我并不是完全知道. 于是觉得还是看一下. 1. __proto__ 作为一个 半吊子前端开发人员. 居然不知道这个.. ...
- 简明Linux命令行笔记:mv
重命名.覆盖或移动文件 mv [options] existing-file new-filename mv [options] existing-file-list directory mv [op ...
- entity1
- tyvj1203 机器分配
描述 总公司拥有高效生产设备M台,准备分给下属的N个公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值.其中M<=100,N& ...
- jQuery入门(3)事件与事件对象
jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...
- PHP计算两个时间段是否有交集(边界重叠不算)
优化前的版本: /** * PHP计算两个时间段是否有交集(边界重叠不算) * * @param string $beginTime1 开始时间1 * @param string $endTime1 ...