【问题标题】:C# Call Graph API with .Net Framework 4.0使用 .Net Framework 4.0 的 C# 调用图 API
【发布时间】:2020-10-04 23:57:51
【问题描述】:

嘿,我试图在 c# .Net Framework 4.0 下向 Graph API 发布一个 http 请求(创建团队在线会议),所以我不能使用 Graph-SDK,也不能使用 System.net.http 库(没有 httpClient) .我尝试了 HttpWebRequest,但在将 Json 发布到 API 时遇到了困难。

我的请求函数如下所示:

private string SendHttpRequest(string Method, string ContentType, WebHeaderCollection Headers, string Content, string URI)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URI);

                request.Method = Method;
                request.Headers = Headers;
                request.PreAuthenticate = true;
                request.ContentType = ContentType;

                StreamWriter requestWriter = new StreamWriter(request.GetRequestStream());
                requestWriter.Write(Content);
                requestWriter.Close();

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                var responseStream = response.GetResponseStream();

                StreamReader responseReader = new StreamReader(responseStream);
                string responseText = responseReader.ReadToEnd();
                responseReader.Close();

                return responseText;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }

当我的内容类型是 text/xml(对于不同的 API)但如果它的 Application/Json. 当我调用HttpWebResponse response = (HttpWebResponse)request.GetResponse();时,我总是收到错误 400

方法 = "POST"

ContentType = "application/json"

标题 = Headers.Set(HttpRequestHeader.Authorization, "Bearer " + accessToken);

内容 = string jsonContent = JsonConvert.SerializeObject(Content);

URI = "https://graph.microsoft.com/v1.0/me/onlineMeetings"

【问题讨论】:

  • 错误具体说明了什么?我记得图表错误包含一些额外的信息。
  • 您使用的是哪个 .net 版本?
  • @jjczopek 我得到的完整错误是:Der Remoteserver hat einen Fehler zurückgegeben: (400) Ungültige Anforderung。这是德语,简单地说是Bad Request。我很遗憾没有得到更多信息
  • @Trinetra-MSFT .Net Framework 4
  • 你能分享你发送的 JSON 有效载荷吗?

标签: c# json api microsoft-teams


【解决方案1】:

对于任何有同样困难的人。

我的 startDateTime 和 endDateTime 中缺少时区。

要添加那些我必须格式化我从数据库中接收的日期时间。

这对我有用:

TimeAndOffset = new DateTimeOffset(reservation.beginnUhrzeit,
   TimeZoneInfo.Local.GetUtcOffset(reservation.beginnUhrzeit));
teamsCreate.startDateTime = TimeAndOffset.ToString("o");

reservation.beginnUhrzeit 是我的数据库变量

teamsCreate 是一个我以后可以序列化为 Json 的对象

之后一切正常。

【讨论】:

    猜你喜欢
    • 2013-08-13
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多