在最近的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平台下的实施的更多相关文章

  1. windows平台下基于VisualStudio的Clang安装和配置

    LLVM 是一个开源的编译器架构,它已经被成功应用到多个应用领域.Clang是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程 ...

  2. windows平台下基于QT和OpenCV搭建图像处理平台

        在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...

  3. 基于.Net平台C#的微信网页版API

    git上有很多类似的项目,但大多都是python和js的,为了便于.Net windows平台的使用,我重构了一个.Net版本的,已整理开源 https://github.com/leestar54/ ...

  4. 基于Kubernetes/K8S构建Jenkins持续集成平台(下)

    基于Kubernetes/K8S构建Jenkins持续集成平台(下) Jenkins-Master-Slave架构图回顾: 安装和配置NFS NFS简介 NFS(Network File System ...

  5. .NET平台下开源框架

    一.AOP框架Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(asp ...

  6. Flask框架学习笔记(API接口管理平台 V1.0)

    今天博主终于完成了API接口管理平台,最后差的就是数据库的维护, 博主这里介绍下平台的设计原理,首先基于python,利用flask的web框架+bootstrap前端框架完成,先阶段完成了前台展示页 ...

  7. 基于Android 平台简易即时通讯的研究与设计[转]

    摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...

  8. NET 平台下的插件化开发内核

    .NET 平台下的插件化开发内核(Rabbit Kernel)   每个程序猿都有一个框架梦,曾经在2013年8月15日写过一篇“Koala Framework是什么?我为什么要写这个框架?”的文章, ...

  9. AspNetCore 使用NLog日志,NLog是基于.NET平台开的类库!(又一神器)

    NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码. NLog是一个简单灵活的.NET日志记录类库.通过使用NLog,我们可以在任何一种.NET语言中 ...

随机推荐

  1. EF Core利用Scaffold从根据数据库生成代码

    在EF6 之前的时代,如果需要从数据库中生成代码,是可以直接在界面上操作的,而到了EF Core的时代,操作方式又有更简便的方式了,我们只需要记住以下这条指令. Scaffold-DbContext ...

  2. VC6.0打开或添加工程时崩溃的解决方法

    官方解决办法(英文):http://support.microsoft.com/kb/241396/en-us 网友解决(中文):http://blog.163.com/wjatnx@yeah/blo ...

  3. C#写一个简单爬虫

    最近研究C#的爬虫写法,搞了半天,才在网上很多的写法中整理出了一个简单的demo(本人菜鸟,大神勿喷).一是为了自己记录一下以免日后用到,二是为了供需要朋友参考. 废话不多说,上代码 using Ht ...

  4. MySQL 笔记整理(13) --为什么数据表删掉一半,表文件大小不变?

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 13) --为什么数据表删掉一半,表文件大小不变? 我们还是以MySQL ...

  5. 变量类型、构造器、封装以及 LeetCode 每日一题

    1.成员变量和局部变量 1.1成员变量和局部变量定义 成员变量指的是类里面定义的变量(field),局部变量指的是在方法里定义的变量. 成员变量无须显示初始化,系统会自动在准备阶段或创建该类的实例时进 ...

  6. 在java中如何实现字符串的反转

    如 "abcdt" 反转之后是 "tdcba" 思路1: 运用递归的方法进行反转 假设反转方法为 reverseString(String str)1)当字符串 ...

  7. 高并发系统保护~ing

    由于公司业务发展,需要考虑一些高并发系统保护的问题,整理记录一下. 当发现你的系统出现访问卡顿,服务器各种性能指标接近100%(如果一个初创型企业系统正常运行情况下出现这个问题,那么应该恭喜你,你懂得 ...

  8. java基础-String不可变的好处

    一.java内部String类的实现: java 8: public final class String implements java.io.Serializable, Comparable< ...

  9. 005. [转] SSH端口转发

    玩转SSH端口转发 SSH有三种端口转发模式,本地端口转发(Local Port Forwarding),远程端口转发(Remote Port Forwarding)以及动态端口转发(Dynamic ...

  10. nlp词性标注

    nlp词性标注 与分词函数不同,jieba库和pyltp库词性标注函数上形式相差极大. jieba的词性标注函数与分词函数相近,jieba.posseg.cut(sentence,HMM=True)函 ...