使用CURL创建SFDC Bulk API Job遇SOAP 1.1版本不匹配错误求助
解决Bulk API创建作业的SOAP版本不匹配错误
你这是把Salesforce的SOAP API和Bulk API的使用方式搞混啦——新手刚接触很容易犯这个错,我来帮你理顺:
问题根源
你当前的curl命令指向的是SOAP API的端点(/services/Soap/u/42.0),但Bulk API是基于REST的异步API,有自己专属的端点,而且完全不需要SOAP相关的请求头(比如SoapAction)。这就是触发"SOAP版本不匹配"错误的核心原因。
正确的解决方案
1. 修正API端点
Bulk API创建作业的正确端点格式是:
https://<你的实例域名>.salesforce.com/services/async/<API版本号>/job
对应你的场景,就是:
https://XXXXX.salesforce.com/services/async/42.0/job
2. 调整curl命令参数
- 必须显式指定
POST请求方法(curl默认是GET,不符合Bulk API创建作业的要求) - 移除多余的
SoapAction请求头 - 保留正确的会话头和内容类型
3. 最终可用的curl命令
你的job.txt内容是完全正确的,直接用这个文件执行下面的命令即可:
curl -X POST https://XXXXX.salesforce.com/services/async/42.0/job \ -H "X-SFDC-Session:XXXXXXXXX" \ -H "Content-Type: text/xml; charset=UTF-8" \ -d @job.txt
额外提示
- 后续如果要上传数据、提交查询或获取结果,都要继续使用Bulk API的对应端点(比如批量数据上传的端点是
/services/async/42.0/job/<作业ID>/batch) - 可以通过Salesforce内部的Setup菜单查看Bulk API的完整操作文档,确认每个步骤的正确路径
内容的提问来源于stack exchange,提问作者Tukaram Marwale
相关产品推荐
相关产品推荐

