Salesforce Bulk API 基于.Net平台下的实施
在最近的salesforce实施项目中应用到Bulk API来做数据接口。顺便把实际应用的例子写下来。希望对做salesforce接口的朋友有借鉴作用。
一 参考网络牛人写好的Demo.
下载地址:https://github.com/lfreeland/Salesforce-Bulk-API-Starter
注意事项:
1) 目前的salesforce 禁用了TLS1.0,所以这个代码要加上
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
2) 引入enterprise.wsdl 时候,目前是发现有个bug.
不清楚怎么引用webservice的朋友,可以先借鉴一下这个好博客
http://www.cnblogs.com/mingmingruyuedlut/p/3493791.html
需要修改reference.cs里面的两个地方,把[][]二维数组改为[] , 方能避免编译错误。
3)关键步骤
a). Connected and get sessionId
private void Login()
{
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
_sfService = new SFDC.SforceService();
_sfService.Url = _LoginURL;
_loginResult = _sfService.login(_UserName, _Password);
_sfService.Url = _loginResult.serverUrl;
SessionID = _loginResult.sessionId;
_urlheader = "https://" + _sfService.Pod + ".salesforce.com";
//SforceService sfService = new SforceService();
_sfService.SessionHeaderValue = new SessionHeader();
_sfService.SessionHeaderValue.sessionId = _loginResult.sessionId; }
b). Create Job
public Job CreateJob(CreateJobRequest createJobRequest)
{
String jobRequestXML =
@"<?xml version=""1.0"" encoding=""UTF-8""?>
<jobInfo xmlns=""http://www.force.com/2009/06/asyncapi/dataload"">
<operation>{0}</operation>
<object>{1}</object>
{3}
<contentType>{2}</contentType>
</jobInfo>"; String externalField = String.Empty; if (String.IsNullOrWhiteSpace(createJobRequest.ExternalIdFieldName) == false)
{
externalField = "<externalIdFieldName>" + createJobRequest.ExternalIdFieldName + "</externalIdFieldName>";
} jobRequestXML = String.Format(jobRequestXML,
createJobRequest.OperationString,
createJobRequest.Object,
createJobRequest.ContentTypeString,
externalField); String createJobUrl = "https://" + _sfService.Pod + ".salesforce.com/services/async/31.0/job"; String resultXML = invokeRestAPI(createJobUrl, jobRequestXML); return Job.Create(resultXML);
}
c). Create BatchRequest
public Batch CreateBatchRequest(string JobID, string filepath)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(_urlheader + "/services/async/31.0/job/" + JobID + "/batch");
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "text/csv; charset=GB2312";
request.Headers.Add("X-SFDC-Session", SessionID);
request.KeepAlive = false;
request.UserAgent = ".NET Framework Test Client";
//"C:\SalesforceStudy\Project_Code\MyAccountImportData.csv"
byte[] byteArray = File.ReadAllBytes(filepath);
request.ContentLength = byteArray.Length;
using (var writeStream = request.GetRequestStream())
{
writeStream.Write(byteArray, , byteArray.Length);
}
using (var response = (HttpWebResponse)request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
if (responseStream != null)
using (var reader = new StreamReader(responseStream))
{
string responseValue = reader.ReadToEnd();
return Batch.CreateBatch(responseValue);
}
}
}
return null;
}
Salesforce Bulk API 基于.Net平台下的实施的更多相关文章
- windows平台下基于VisualStudio的Clang安装和配置
LLVM 是一个开源的编译器架构,它已经被成功应用到多个应用领域.Clang是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程 ...
- windows平台下基于QT和OpenCV搭建图像处理平台
在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...
- 基于.Net平台C#的微信网页版API
git上有很多类似的项目,但大多都是python和js的,为了便于.Net windows平台的使用,我重构了一个.Net版本的,已整理开源 https://github.com/leestar54/ ...
- 基于Kubernetes/K8S构建Jenkins持续集成平台(下)
基于Kubernetes/K8S构建Jenkins持续集成平台(下) Jenkins-Master-Slave架构图回顾: 安装和配置NFS NFS简介 NFS(Network File System ...
- .NET平台下开源框架
一.AOP框架Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(asp ...
- Flask框架学习笔记(API接口管理平台 V1.0)
今天博主终于完成了API接口管理平台,最后差的就是数据库的维护, 博主这里介绍下平台的设计原理,首先基于python,利用flask的web框架+bootstrap前端框架完成,先阶段完成了前台展示页 ...
- 基于Android 平台简易即时通讯的研究与设计[转]
摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...
- NET 平台下的插件化开发内核
.NET 平台下的插件化开发内核(Rabbit Kernel) 每个程序猿都有一个框架梦,曾经在2013年8月15日写过一篇“Koala Framework是什么?我为什么要写这个框架?”的文章, ...
- AspNetCore 使用NLog日志,NLog是基于.NET平台开的类库!(又一神器)
NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码. NLog是一个简单灵活的.NET日志记录类库.通过使用NLog,我们可以在任何一种.NET语言中 ...
随机推荐
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.3版本全新发布
1.RDIFramework.NET框架介绍 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,为企业或个人快速开发系统提供了强大的支持,开发人员不需要开发系统的基础功能和 ...
- Java运行时环境---ClassLoader类加载机制
背景:听说ClassLoader类加载机制是进入BAT的必经之路. ClassLoader总述: 普通的Java开发其实用到ClassLoader的地方并不多,但是理解透彻ClassLoader类的加 ...
- Redis入门简述
Redis 是一个开源的,使用 ANSI C (C语言)编写,高性能的 Key-Value(键值对) 的 NoSQL 数据库 NoSQL = Not Only SQL,意即“不仅仅是SQL”,是一项全 ...
- android 记一次解决键盘遮挡问题
文章链接:https://mp.weixin.qq.com/s/1gkMtLu0BTXOUOj6isDjUw 日常android开发过程中,会遇到编辑框输入内容弹出软键盘,往往会出现键盘遮挡内容,或者 ...
- Android为TV端助力 电影栏目移动到底部或者顶部时抖动动画
1 移动到底部上下抖动ObjectAnimator animatorX = ObjectAnimator.ofFloat(holder.itemView,"translationX" ...
- MyBatis Generator 生成器把其他数据库的同名表生成下来的问题
[问题] 使用MyBatis Generator生成器时,发现Mapper文件中出现字段与连接数据库不符,经过查找发现该表是其他数据库的同名表的字段. [解决问题] 在构造文件中,这里是generat ...
- 基于Android的模拟点击探索
前言 压力测试中,一般会用到自动化测试.准备写一个APP,可以记录屏幕上的点击事件,然后通过shell命令来模拟自动执行.shell指令,比较容易实现.那么,关键的一步是获取点击的坐标.对于Andro ...
- Git-初始化配置及SSH_key配置
step1.安装完Git,执行检查是否安装成功:git --version step2.配置全局变量 配置完执行检查:git config --list step3.生成SSH_KEY 如果报ssh- ...
- C# -- 使用Parallel并行执行任务
C#:使用Parallel并行执行任务 1. 代码实现 class Program { static void Main(string[] args) { TestParallel(); Consol ...
- 【java学习】Intelli Idea集成开发工具的使用
== mac版直接下载地址: https://download.jetbrains.com/idea/ideaIU-2018.1.6.dmg ==mac配置java环境变量: https://ji ...