我想在SharePoint中使用下面的代码的项目添加到列表:C#添加项目到SharePoint列表使用REST API
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”:{ “类型”: “SP.Data.Test_x0020_ListListItem”}, “标题”: “测试”, “列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
,它甾体抗炎药,我可以”得到的,更的accessToken,所以我用的用户名和密码登录的共享点,但这里涉及另外一个问题:
一个System.Net.WebException
在var resp = endpointRequest.GetResponse()
被抛出,错误是说The remote server returned an error: (403) Forbidden.
该帐户是域管理员以及SharePoint管理员。
为什么我仍然收到403错误?
由于某些原因,我只能使用REST API与SharePoint进行通信。
您是否缺少网络凭证中的域名....? –
@vinayakhegde我检查了用户名和密码,他们正确的相应的域名,我也尝试登录在Internet Explorer中使用该用户名和密码,它的工作原理... – User2012384
我可以提供一个REST示例如果你喜欢,可以使用HttpClient上传文件。走这条路很容易。有什么理由不想使用休息吗?它与您正在做的相似,并且可以在任何地方使用,包括商店应用。 –