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语言中 ...
随机推荐
- WebApiClient与Asp.net core DI的结合
1 WebApiClient 一款基于HttpClient封装,只需要定义c#接口并修饰相关特性,即可异步调用远程http接口的客户端库 WebApiClient WebApiClient.Exten ...
- 命令行程序增加 GUI 外壳
Conmajia © 2012 Updated on Feb. 21, 2018 命令行大家都用过: 图 1 命令行程序工作界面 现在想办法为它做一个 GUI 外壳,实际效果参考图 2. 图 2 带 ...
- Java开发笔记(序)章节目录
现将本博客的Java学习文章整理成以下笔记目录,方便查阅. 第一章 初识JavaJava开发笔记(一)第一个Java程序Java开发笔记(二)Java工程的帝国区划Java开发笔记(三)Java帝国的 ...
- jsp内置对象-config对象
1.概念:config对象中存储了一些Servlet初始化的数据结构,当Servlet初始化时,JSP容器通过config对象将这些信息传递给这个Servlet.一般在web.xml文件中配置Serv ...
- ASP.NET MVC2未能加载类型“System.Web.Mvc.ViewPage的解決方法
问题描述: “/”应用程序中的服务器错误. 分析器错误 说明: 在分析向此请求提供服务所需资源时出错.请检查下列特定分析错误详细信息并适当地修改源文件. 分析器错误消息: 未能加载类型“System. ...
- vue 利用mockJs 模拟数据
工作这几年一直用Java 开发,前端的技术自己也忘得差不多了(实际上自己也不怎么会),最近参与的项目是用VUE + Element-ui + springboot 写的,由于需求没有定,先画一个de ...
- 如何保持Redis和MySQL数据一致
原文:https://blog.csdn.net/thousa_ho/article/details/78900563 1. MySQL持久化数据,Redis只读数据 redis在启动之后,从数据库加 ...
- Android 获取验证码倒计时实现
Android 获取验证码倒计时实现 2017年10月24日 09:55:41 FBY展菲 阅读数:2002 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- H5播放器内置播放视频(兼容绝大多数安卓和ios)
关于H5播放器内置播放视频,这个问题一直困扰我很长一段时间,qq以前提供白名单已经关闭,后来提供了同层属性的控制,或多或少也有点差强人意. 后来一次偶然发现一个非常简单的方法可以实现. 只需要给vid ...
- 2 OpenWrt路由器系统开发与网页设计
https://www.zhongkerd.com/news/content-729.html 摘 要: 目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户 ...