C# 远程服务器返回错误:(401)未经授权

C# 远程服务器返回错误:(401)未经授权,c#,C#,我正在尝试使用以下代码从windows live connect api获取访问令牌 字符串requestUrl=”https://consent.live.com/AccessToken.aspx"; 但我收到了以下错误 远程服务器返回错误:(401)未经授权。显示响应正文,它通常包含更多信息。您还应该使用urlencodehttp://ewshops.com在将其添加到uri之前。显示响应主体,它通常包含更多信息。您还应该使用urlencodehttp://ewshops.com在将其添加到

我正在尝试使用以下代码从windows live connect api获取访问令牌

字符串requestUrl=”https://consent.live.com/AccessToken.aspx";

但我收到了以下错误


远程服务器返回错误:(401)未经授权。

显示响应正文,它通常包含更多信息。您还应该使用urlencode
http://ewshops.com
在将其添加到uri之前。

显示响应主体,它通常包含更多信息。您还应该使用urlencode
http://ewshops.com
在将其添加到uri之前。

我遇到了相同的问题,并按如下方式修复了它。删除请求URL(“https://consent.live.com/AccessToken.aspx)和postData中的后续“?”。POST数据应为x-www-form-urlencoded格式,且不包括请求URL。还有HttpUtility.UrlEncode()所有参数。

我遇到了同样的问题,并按如下方式修复了它。删除请求URL(“https://consent.live.com/AccessToken.aspx)和postData中的后续“?”。POST数据应为x-www-form-urlencoded格式,且不包括请求URL。还有HttpUtility.UrlEncode()所有参数。

我是否可以建议您稍微清理一下这个问题中代码块的格式(例如,删除所有不必要的空行),使其更具可读性?请参阅“我已重新格式化了帖子谢谢”我建议您稍微清理一下这个问题中代码块的格式(例如,删除所有不必要的空行),以便它更具可读性?请参见“我已重新格式化”页面。尝试获取响应时返回了post thanksAn异常,这是堆栈跟踪:尝试获取响应时返回了异常,这是堆栈跟踪:
        // Request the access token.
        string postData = string.Format("{0}?wrap_client_id={1}&wrap_client_secret={2}&wrap_callback={3}&wrap_verification_code={4}&idtype={5}",
                requestUrl,
               "000000004C039809",
                "l4VJekL1vFL1iFVmcP5qLkWv9ukY4mdl",
                "http://ewshops.com",
                "dac5d71d-d640-30d1-ebed-3576b132b3ec",
                "cid");
        byte[] postDataEncoded = System.Text.Encoding.UTF8.GetBytes(postData);

        WebRequest req = HttpWebRequest.Create(requestUrl);
        req.Method = "POST";
       // req.
        req.ContentType = "application/x-www-form-urlencoded";
        req.ContentLength = postDataEncoded.Length;


        Stream requestStream = req.GetRequestStream();
        requestStream.Write(postDataEncoded, 0, postDataEncoded.Length);

        WebResponse res = req.GetResponse();

        string responseBody = null;

        using (StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8))
        {
            responseBody = sr.ReadToEnd();
        }

        // Process FORM POST.
        NameValueCollection responseCollection = System.Web.HttpUtility.ParseQueryString(responseBody);

        return responseCollection["wrap_access_token"];