首页 > 解决方案 > JSON POST 到 Sharepoint 使用图形状态代码 400

问题描述

好的。所以这真的开始让我感到困惑。我可以让它在一个 UWP 应用程序上工作,但不是这个。

我有这段代码要发布:

public async Task<string> SubmitDataWithTokenAsync(string url, string token)
        {
            var httpClient = new HttpClient();
            HttpResponseMessage response;
            try
            {
                var root = new
                {
                    fields = new Dictionary<string, string>
                    {
                       //General Parameters...
                       //Inspection Parameters...
                       //Startup Parameters...
                       //Mechanical Parameters...
                       //Electrical Parameters...
                       //SCR Parameters...
                       //Shutdown Parameters...
                    }
                };

                var s = new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat };
                var content = JsonConvert.SerializeObject(root, s);
                var request = new HttpRequestMessage(HttpMethod.Post, url);
                //Add the token in Authorization header
                request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
                request.Content = new StringContent(content, Encoding.UTF8, "application/json");
                response = await httpClient.SendAsync(request);
                var responseString = await response.Content.ReadAsStringAsync();
                return responseString;
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
        }
    }

内容恢复得很好,所以看起来....

"{\"fields\":{\"Date\":\"8/16/2018 2:18:48 PM -04:00\",\"Maximo\":null,\"IBX\":\"DC4\",\"Generator\":\"Generator D\",\"AirQuality\":\"Red / Unhealthy\",\"Engineer\":\"Kassim Ganiyou\",\"MT1Level\":null,\"MT2Level\":null,\"StartDTLevel\":null,\"BC1V\":null,\"BC1A\":null,\"BC2V\":null,\"BC2A\":null,\"StartCoolantTEmp\":null,\"StartHours\":null,\"Reason\":null,\"InspectionNotes\":null,\"StartTime\":null,\"CrankV1\":null,\"CrankV2\":null,\"Emissions\":null,\"SCRStartTime\":null,\"OilPressure\":null,\"CoolantTemp\":null,\"BatteryVolt\":null,\"LeftExhTemp\":null,\"RightExhTemp\":null,\"ABVolts\":null,\"BCVolts\":null,\"CAVolts\":null,\"AAmps\":null,\"BAmps\":null,\"CAmps\":null,\"KW\":null,\"Frequency\":null,\"SCROutletTemp\":null,\"NOx\":null,\"UReaFLow\":null,\"Alarms\":null,\"SCRSTopTime\":null,\"StopTime\":null,\"StopHours\":null}}"

请求返回:

{Method: POST, RequestUri: 'https://graph.microsoft.com/v1.0/sites/root/lists/A07CEC93-XXXX-XXXX-XXXX-0F756D2EF63A/items', Version: 2.0, Content: System.Net.Http.StringContent, Headers:
{
  Authorization: Bearer eyJ0eX...PUQ
  Content-Type: application/json; charset=utf-8
  Content-Length: 603
}}

但随后的回应是:

{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  client-request-id: bb26e6fe-4fae-41ae-921d-aeb39063bd8e
  Strict-Transport-Security: max-age=31536000
  request-id: bb26e6fe-4fae-41ae-921d-aeb39063bd8e
  Transfer-Encoding: chunked
  x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"East US","Slice":"SliceC","Ring":"5","ScaleUnit":"001","Host":"AGSFE_IN_1","ADSiteName":"EUS"}}
  Duration: 319.5961
  Cache-Control: private
  Date: Thu, 16 Aug 2018 20:03:10 GMT
  Content-Type: application/json
}}

我有另一个 UWP 应用程序访问同一个共享点站点,我得到了 Status 201 没问题。在这种情况下,我只是没有看到我的问题在哪里。

标签: c#jsonpostuwpsharepoint-online

解决方案


这就是为什么最好从一个项目中休息一下,然后再回来做。

我发现我在 SharePoint 列表中打错了一个字母。所以今天当我查看响应代码时,它把它指向了我。

代码很好。

谢谢大家。


推荐阅读