2011-09-05 87 views
0

我閱讀了Salesforce Chatter REST API的文檔,並開始在c#中實現代碼。 請參見下面的代碼:使用Chatter REST API上傳文件

System.Net.WebRequest req = System.Net.WebRequest.Create(URI); 
     req.Method = "POST"; 
     req.Headers.Add("Authorization: OAuth " + accessToken); 
     req.ContentType = "application/x-www-form-urlencoded"; 
     string par = 
       "fileName=" + fileName + 
      "&feedItemFileUpload="     
      + @"D:\\MyFiles\\NewTextDocument.txt" +     
        "&desc=" + desc+ 
        "&text=" + text; 

     byte[] byteArray = Encoding.UTF8.GetBytes(par); 
     req.ContentLength = byteArray.Length; 
     Stream dataStream = req.GetRequestStream(); 
     dataStream.Write(byteArray, 0, byteArray.Length); 
     dataStream.Close(); 

     System.Net.WebResponse resp = req.GetResponse(); 

我對響應 gettig錯誤遠程服務器返回錯誤:(400)錯誤的請求。

如果我看到錯誤的反應,我得到了以下信息:

請指定要上傳的文件。輸入文件的路徑,或使用\「Browse \」按鈕在本地文件系統中找到它。

我已經定義了文件路徑和名稱。我在路徑字符串之前嘗試使用和不使用@符號,但得到相同的錯誤。讓我知道是否有遺漏。

回答

2

您可以輕鬆使用Fiddler來查看正在發生的事情。

您要發送一個簡單的形式,其中fileNamefeedItemFileUpload就像desctext,換句話說,樸素簡單的文本

您需要做的是將文件作爲流發送。

我可以看到你正在使用Hanselman's代碼,但這只是文本參數

的更多信息,使用它的文件,看到這個答案

Upload files with HTTPWebrequest (multipart/form-data)

+0

我通過文件的內容,但仍然得到同樣的錯誤...該文件的第37頁的 – Brij

+0

指出你需要使用** JSON **或** XML * *,**加**他們指定你需要使用'multipart/form-data',在你的例子中你使用'application/x-www-form-urlencoded' ...你不是usi或者!正如我所看到的,您對服務的使用不是很熟悉,我建議您向Sales Force尋求幫助,因爲您可能是付費的客戶/開發人員。 – balexandre

+0

我必須將以下Java代碼轉換爲C#https://github.com/developerforce/Chatter-REST-API/wiki/Posting-a-file-from-Java – Brij