在最近的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. SmartSql 入门

    入门 安装 Install-Package SmartSql Install-Package SmartSql.Schema // 以及相应ADO.NET驱动 从连接字符串创建SmartSql实例 v ...

  2. 自定义Visual Studio.net Extensions 开发符合ABP vnext框架代码生成插件[附源码]

    介绍 我很早之前一直在做mvc5 scaffolder的开发功能做的已经非常完善,使用代码对mvc5的项目开发效率确实能成倍的提高,就算是刚进团队的新成员也能很快上手,如果你感兴趣 可以参考 http ...

  3. Php7.3 could not find driver

    今天phpstudy升级php7.3,发现框架报错:could not find driver,后来发现默认php.ini的配置有几个是注释掉的,配置php.ini,修改如下 extension=my ...

  4. jQuery(五)、筛选

    1 过滤 1.eq(index | -index) 获取第N个元素,index为元素索引,-index值基于最后一个元素的位置(从 1 开始) 2.first() 获取第一个元素 3.last() 获 ...

  5. jQuery(三)、属性、CSS

    jQuery设置了很多为标签进行属性的操作,比如添加.删除. 一 .属性 1 attr(name | properties | [key, value | fn]) 设置或返回被选择的属性值. 参数: ...

  6. java--基本数据类型的转换(强制转换)

    强制类型的转换 规则: 1.执行算术运算时,低类型(短字节)可以转换为高类型(长字节):例如: int型转换成double型,char型转换成int型等等. 就是用强制类型来实现. 3.强制类型转换语 ...

  7. Android为TV端助力:自定义view之太阳

    先看效果图 package com.hhzt.iptv.lvb_w8.view; import android.content.Context;import android.graphics.Canv ...

  8. python datetime操作

    #datetime object转化为timestamp import datetime now = datetime.datetime.now() now_timestamp = time.mkti ...

  9. js清空数组的方法

    方式1:splice函数 arrayObject.splice(index,howmany,element1,.....,elementX) index:必选,规定从何处添加/删除元素. howman ...

  10. tensorflow的基本认识

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/10741013.html 作者:窗户 ...