如何为多部分表单数据形成WebRequest及其价值?

时间:2014-06-16 08:34:22

标签: c# .net rest oauth-2.0 box

我有Rest API Url https://www.box.com/api/oauth2/token。分别获取刷新/访问令牌。

当我在PostMan (Chrome Extension)中尝试此操作时,它的工作正常。下面我附上了截屏。

获取访问令牌参考:https://developers.box.com/oauth/

enter image description here

但是我在Code中尝试过它Bad Request Error

    public string PostToUrl(string url, string data)
    {
        string results = String.Empty;
        WebRequest req = WebRequest.Create(url);
        req.Method = WebRequestMethods.Http.Post;
        byte[] byteArray = Encoding.UTF8.GetBytes(data);
        req.ContentType = "application/x-www-form-urlencoded";
        req.ContentLength = byteArray.Length;
        Stream dataStream = req.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        WebResponse res = req.GetResponse();
        dataStream = res.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        results = reader.ReadToEnd();
        return results;
    }

    public override void TestConnection(TimeSpan timeout)
    {
       string json = PostToUrl("https://www.box.com/api/oauth2/token", "code=" + Code + "&grant_type=authorization_code&client_id=" + ClientId + "&client_secret=" + ClientSecret);
    }

这里我的问题是......

我如何形成此休息的请求API call? 如何将多表格数据和值合并到该请求中?

通过邮递员提出请求:

enter image description here

来自我的代码的框请求:

enter image description here

2 个答案:

答案 0 :(得分:2)

尝试将这两个请求与fiddler进行比较,以发现差异。

您还可以使用RestSharp简化您的Rest处理代码。

答案 1 :(得分:1)

我已将NameValueCollection添加到标题中。喜欢下面

            var nameValue = new NameValueCollection
            {
                {"grant_type", "authorization_code"},
                {"client_id", ClientId},
                {"client_secret", ClientSecret},
                {"code", RefreshToken}
            };

            request.Headers.Add(nameValue);

初始参考Link

现在它工作正常。