使用C#,Windows Phone 8.1获取访问令牌

时间:2016-06-13 06:31:48

标签: c# windows-phone-8.1

我正在尝试获取feed的访问令牌.Below是一个代码,我用来获取访问令牌。

public async Task<string> GetAccessToken()
        {
            string postString = String.Format("username={0}&password={1}&grant_type=password", "userName", "pwd");

            string url = "http://example.net/Token";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url.ToString());
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";

            UTF8Encoding utfenc = new UTF8Encoding();
            byte[] bytes = utfenc.GetBytes(postString);


            try
            {
                HttpWebResponse webResponse = (HttpWebResponse)(await request.GetResponseAsync());
                Stream responseStream = webResponse.GetResponseStream();
                StreamReader responseStreamReader = new StreamReader(responseStream);
                string result = responseStreamReader.ReadToEnd();//parse token from result
            }
            catch(Exception ex)
            {
            }
            return "";
        }

以下错误

"An error occurred while sending the request. The text associated with this error code could not be found.

The server name or address could not be resolved"

在执行以下代码时抛出

HttpWebResponse webResponse = (HttpWebResponse)(await request.GetResponseAsync());

请帮我解决问题

1 个答案:

答案 0 :(得分:0)

如果您使用POST请求

,请尝试此操作
public async Task<string> GetAccessToken()
    {
        string postString = String.Format("username={0}&password={1}&grant_type=password", "userName", "pwd");
        try
        {
            using (var httpClient = new HttpClient())
            {
                var request1 = new HttpRequestMessage(HttpMethod.Post, "FeedURL");
                request1.Content = new StringContent(postString);
                var response = await httpClient.SendAsync(request1);
                var result1 = await response.Content.ReadAsStringAsync();
                result1 = Regex.Replace(result1, "<[^>]+>", string.Empty);
                var rootObject1 = JObject.Parse(result1);
                string accessToken = rootObject1["access_token"].ToString();
            }

        }
        catch (Exception ex)
        {

        }
    }