2013-08-27 35 views
0

我见过this example在Java中构建并发送附件到Salesforce,但是如何在C#中完成这项工作?用C#上传Salesforce的文件附件

编辑 - 我也使用this page作为参考,但我仍然不知道如何完成我尝试创建和保存附件的最后部分。

SoapClient client = new SoapClient(); 
LoginResult lr = client.login(new LoginScopeHeader(), username, password); 

FileInfo fileInfo = new FileInfo(myFileLocation); 
FileStream stream = File.OpenRead(myFileLocation); 
byte[] byteArray = new byte[fileInfo.Length]; 
stream.Read(byteArray, 0, byteArray.Length); 

Attachment attachment = new Attachment(); 
attachment.Body = byteArray; 
attachment.Name = myFileName + ".txt"; 
attachment.IsPrivate = false; 

SaveResult saveResult = client.create(new sObject[] { attachment })[0]; 

回答

1

它看起来正确一般。有以下更改。

调用登录后,您需要将生成的SessionId和ServerUrl分配给客户端。

SoapClient client = new SoapClient(); 
LoginResult lr = client.login(new LoginScopeHeader(), username, password); 
client.SessionHeaderValue = new SforceService.SessionHeader(); 
client.SessionHeaderValue.sessionId = li.sessionId; 
client.Url = loginResult.serverUrl; 

您应该检查SaveResult以查看记录是否已创建以及新ID是什么。

//... 
SaveResult saveResult = client.create(new sObject[] { attachment })[0]; 
if (saveResult .success){ 
    // saveResult.id contains id of newly created attachment 
} else { 
    //saveResult .errors[0] contains reason why attachment couldn't be created. 
} 
+0

SoapClient没有SessionHeaderValue或Url参数,并且SforceService不是我的可用对象。我如何让这些对象出现?我正在使用Salesforce Enterprise wsdl。 – WEFX

+1

我不得不将企业wsdl添加为Web参考,而不仅仅是服务参考。这在VS2012中很困难,但目前正在运行。谢谢 – WEFX