【问题标题】:Calling SharePoint with HttpClient PostAsync() results into forbidden response使用 HttpClient PostAsync() 调用 SharePoint 导致禁止响应
【发布时间】:2017-06-08 09:37:54
【问题描述】:

我正在尝试将 HttpClient PostAsync() 请求发送到公司的内部共享点站点,但它返回的响应带有禁止错误。我拥有加载站点所需的所有访问权限,并且还将所需的标头传递给 HttpClient 对象。

这里是代码 sn-p。

HttpClient client = new System.Net.Http.HttpClient (new HttpClientHandler { UseDefaultCredentials = true });

client.BaseAddress = new Uri (string.Format (API_URL, p_siteNumber));
client.DefaultRequestHeaders.Accept.Add (new MediaTypeWithQualityHeaderValue (@"application/atom+xml"));
client.DefaultRequestHeaders.TryAddWithoutValidation ("Accept-Encoding", "gzip, deflate");
client.DefaultRequestHeaders.TryAddWithoutValidation ("Accept-Language", "en-US, en;q=0.8, hi;q=0.6");
client.DefaultRequestHeaders.TryAddWithoutValidation ("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
client.DefaultRequestHeaders.TryAddWithoutValidation ("Accept-Charset", "ISO-8859-1");

HttpResponseMessage httpResponse = await client.PostAsync (urlHttpPost, new StringContent (string.Empty));

string response = await httpResponse.Content.ReadAsStringAsync ();

谁能帮我解决这个问题? 提前致谢。

【问题讨论】:

  • 根据您给我们的帮助,我们真的帮不上什么忙。您可能缺少服务器期望的标头或某种 cookie 或 post 值。我建议使用诸如 Fiddler 之类的软件来嗅出一个有效的请求并将其应用到您的代码中。
  • 如果您使用来自chrome.google.com/webstore/detail/postman/… 的相同标头和内容执行相同的请求,您会得到相同的结果吗?
  • 您使用的网址是什么?你试图做什么?如果您的帐户无权使用它们,您将无法访问它们。您是否尝试过使用 Client Object Model ?从它开始以消除请求问题,例如无效的 URL 或错误的标头

标签: c# httprequest httpclient httpresponse


【解决方案1】:

我遇到了同样的问题,我想用它发送文件和一些字符串内容。

所以下面的代码帮助了我!!

using (var client = new HttpClient())
        {
            //client.DefaultRequestHeaders.Add("User-Agent", "CBS Brightcove API Service");
            string authorization = GenerateBase64();
            client.DefaultRequestHeaders.Add("Authorization", authorization);


            using (var content = new MultipartFormDataContent())
            {

                string fileName = Path.GetFileName(textBox1.Text);

                //Content-Disposition: form-data; name="json"
                var stringContent = new StringContent(InstancePropertyObject);
                stringContent.Headers.Remove("Content-Type");
                stringContent.Headers.Add("Content-Type", "application/json");
                stringContent.Headers.Add("Content-Disposition", "form-data; name=\"instance\"");
                content.Add(stringContent, "instance");

                var fileContent = new ByteArrayContent(filecontent);
                fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                {
                    FileName = fileName
                };
                content.Add(fileContent);

                var result = client.PostAsync(targetURL, content).Result; 
            }
        }

【讨论】:

    猜你喜欢
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多