使用Chatter REST API上传文件

本文关键字:文件 API Chatter REST 使用 | 更新日期: 2023-09-27 18:07:24

我阅读了Salesforce Chatter REST API的文档,并开始用c#实现代码。请看下面的代码:

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();

我在响应上得到错误远程服务器返回一个错误:(400)Bad Request.

如果我看到错误的响应,我得到以下消息:

请指定要上传的文件。输入文件的路径,或者使用"Browse"按钮在本地文件系统中找到它。

我已经定义了文件路径和名称。我在路径字符串之前尝试过和没有@符号,但得到同样的错误。如果缺少什么,请告诉我。

使用Chatter REST API上传文件

你可以很容易地使用Fiddler来查看发生了什么。

您正在发布一个简单的形式,其中fileNamefeedItemFileUpload就像desctext一样,换句话说,纯简单文本!

你需要做的是将文件作为流发送。

我可以看到你正在使用Hanselman的代码,但那只是用于文本参数

有关在文件中使用它的更多信息,请参阅这个答案

上传HTTPWebrequest (multipart/form-data)