在最近的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

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  2. Angular动态创建组件之Portals

    这篇文章主要介绍使用Angular api 和 CDK Portals两种方式实现动态创建组件,另外还会讲一些跟它相关的知识点,如:Angular多级依赖注入.ViewContainerRef,Por ...

  3. 零基础学Python--------第11章 使用Python操作数据库

    第11章 使用Python操作数据库 11.1 数据库编程接口 在项目开发中,数据库应用必不可少.虽然数据库的种类有很多,如SQLite.MySQL.Oracle等,但是它们的功能基本都是一样的,为了 ...

  4. 倒计时5S秒自动关闭弹窗

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. JavaScript中的十个难点,你有必要知道。

    1. 立即执行函数 立即执行函数,即Immediately Invoked Function Expression (IIFE),正如它的名字,就是创建函数的同时立即执行.它没有绑定任何事件,也无需等 ...

  6. ThinkPHP 5.0/5.1 自定义404界面的配置

    ★ 背景还要啥背景,就是觉得不可能用框架自带的 404 界面呗.可能跟之前的版本配置方法有点区别,在此做一下简单的笔记 框架:ThinkPHP 5.1,ThinkPHP5.0.20 ★ 配置过程♩. ...

  7. 小tips:JS的Truthy和Falsy(真值与假值)

    前言 Truthy 不等于 ture,他是指是在Boolean上下文中转换后的值为真的值.我的理解是,在javascript中所有表达式为true的值.同理Falsy指的是在javascript中所有 ...

  8. Java Web相关问题

     关于这两天主要问题的解答: (1) 驱动程序无法使用安全套接字层(SSL)加密与 SQL Server 建立安全连接.错误: java.lang.RuntimeException: Could no ...

  9. java笔记----获取电脑上ip(内网ip)

    private static String getHostIP(){ String tempIP = "127.0.0.1"; try { if(isIpv4(InetAddres ...

  10. centos7网络配置总结

    centos7网络配置 --wang 一.通过配置文件 配置/etc/sysconfig/network-scripts/en.. 记忆信息量大,易出错,不推荐使用.配置多台电脑静态ip可以通过复制模 ...