Gmail创建草稿api会在C#中返回“MIssing draft message”错误

时间:2017-02-01 06:55:49

标签: c# google-api gmail-api

我已经尝试了所有网站上述错误的所有可行方法和解决方案。帮助我。以下是我使用过的代码。我已经注意了身份验证部分,因为它可以很好地列出草稿。字符串“iDraftString”是rfc2822格式化的字符串,其中包含所有内容,即正文和标题。我在gmail资源管理器中使用相同的Raw64,它正在成功创建草稿。所以我不认为格式化字符串有问题。

CreateDraft(string iDraftString)
{   
    string userId = "me@gmail.com";
    string uriString = "https://www.googleapis.com/gmail/v1/users/" + userId + "/drafts";
    Uri oLabelUri = new Uri(uriString);
    HttpWebRequest oSendReq = HttpWebRequest.CreateHttp(oLabelUri);
    oSendReq.Method = "POST";
    oSendReq.Headers["Authorization"] = "Bearer " + accessToken;
    StreamWriter oReqStream = new StreamWriter(oSendReq.GetRequestStream());
    string Raw64 = Base64Encode(iDraftString);
    string json = new JavaScriptSerializer().Serialize( new
    {
        message = new
        {
            raw = Raw64,
            sizeEstimate = Raw64.Length
        }
    });
        oReqStream.Write(json);
        oReqStream.Close();
        var oLabelResponse = (HttpWebResponse)oSendReq.GetResponse();
}

错误回复

{  
   "error":{  
      "errors":[  
         {  
            "domain":"global",
            "reason":"invalid Argument",
            "message":"Missing draft message"
         }
      ],
      "code":400,
      "message":"Missing draft message"
   }
}

1 个答案:

答案 0 :(得分:0)

最后我得到了解决方案。 Http请求的内容类型必须设置为" application / json"

oSendReq.​​ContentType =" application / json";