【发布时间】:2015-12-20 11:08:30
【问题描述】:
我想使用以下代码将项目添加到 sharepoint 中的列表:
protected string httpGetPost(string getPostMode, string url, string dataToPost = "")
{
HttpWebRequest endpointRequest = (HttpWebRequest)WebRequest.Create(url);
endpointRequest.Method = getPostMode;
var credentialCache = new CredentialCache();
credentialCache.Add(
new Uri(endpointRequest.RequestUri.GetLeftPart(UriPartial.Authority)), // request url's host
"Digest", // authentication type
new NetworkCredential(userName, password) // credentials
);
endpointRequest.Credentials = credentialCache;
endpointRequest.Accept = "application/json;odata=verbose";
endpointRequest.ContentType = "application/json;odata=verbose";
if (!string.IsNullOrEmpty(dataToPost))
{
using (Stream dataStream = endpointRequest.GetRequestStream())
{
byte[] bs = Encoding.ASCII.GetBytes(dataToPost);
dataStream.Write(bs, 0, bs.Length);
}
}
using (var resp = endpointRequest.GetResponse())
{
var html = new StreamReader(resp.GetResponseStream()).ReadToEnd();
return html;
}
}
并使用以下代码调用上述方法:
httpGetPost("POST", url, "{\"__metadata\": { \"type\": \"SP.Data.Test_x0020_ListListItem\" }, \"Title\": \"Test\", \"Column B\", \"BBB\"}");
这是我发布的数据:
{"__metadata": { "type": "SP.Data.Test_x0020_ListListItem" }, "Title": “测试”、“B 列”、“BBB”}
我查看了这个网站https://msdn.microsoft.com/en-us/library/office/dn292552.aspx,但是授权不同,它使用了一个accesstoken,但问题是:
在这个网站:http://sharepoint.stackexchange.com/questions/69617/sharepoint-2013-oauth-url-to-get-token,它说我无法获取访问令牌,所以我使用用户名和密码登录共享点,但这里又出现了一个问题:
var resp = endpointRequest.GetResponse() 中抛出了一个System.Net.WebException,错误是The remote server returned an error: (403) Forbidden.
该帐户是域管理员和共享点管理员。
为什么我仍然收到 403 错误?
由于某些原因,我只能使用 REST API 与 sharepoint 进行通信。
【问题讨论】:
-
您是否在网络凭据中缺少域名......?
-
@vinayakhegde 我已经检查了用户名和密码,它们使用适当的域名是正确的,我也尝试在 Internet Explorer 中使用该用户名和密码登录,它可以工作......
-
如果您愿意,我可以提供一个使用 HttpClient 上传文件的 REST 示例。走这条路很容易。有什么理由你不想使用休息吗?它与您正在做的事情类似,可以在任何地方使用,包括商店应用程序。
-
@Arcan.NET 好的,我很想看看你的例子,我只能使用 REST API,因为我有一个项目本身不想使用共享点库的请求.
标签: c# rest sharepoint sharepoint-2013