public static Uri AddOrUpdateQuery(this Uri uri, IEnumerable <KeyValuePair <string, string> > parameter) { foreach (var nameValue in parameter) { uri = uri.AddOrUpdateQuery(nameValue.Key, nameValue.Value); } return(uri); }
/// <summary> /// 获取授权码,将会弹出授权窗口。 /// </summary> /// <returns>授权码。</returns> /// <exception cref="AuthorizeException">用户取消授权或者授权过程中网络异常。</exception> private async Task <string> GetAuthorizeCodeAsync() { Uri requestUri = new Uri("https://api.weibo.com/oauth2/authorize"); requestUri = requestUri.AddOrUpdateQuery("client_id", WeiboSettings.AppKey); requestUri = requestUri.AddOrUpdateQuery("redirect_uri", WeiboSettings.RedirectUri); if (DeviceHelper.IsDesktop) { requestUri = requestUri.AddOrUpdateQuery("display", "client"); } else if (DeviceHelper.IsMobile) { requestUri = requestUri.AddOrUpdateQuery("display", "mobile"); } WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, requestUri, new Uri(WeiboSettings.RedirectUri)); switch (result.ResponseStatus) { case WebAuthenticationStatus.Success: string responseUrl = result.ResponseData; string authorizeCode = new Uri(responseUrl).GetQueryParameter("code"); return(authorizeCode); case WebAuthenticationStatus.UserCancel: throw new AuthorizeException("user cancel authorize") { Result = result }; case WebAuthenticationStatus.ErrorHttp: throw new AuthorizeException("http connection error") { Result = result }; default: throw new AuthorizeException("unknow error") { Result = result }; } }
public void TestAddOrUpdateQuery2() { Uri uri, uri2; uri = new Uri("http://www.baidu.com"); uri2 = uri.AddOrUpdateQuery(new Dictionary <string, string>() { { "sex", "male" }, { "name", "tom" } }); Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?sex=male&name=tom"); }
public void TestAddOrUpdateQuery() { Uri uri, uri2; uri = new Uri("http://www.baidu.com"); uri2 = UriHelper.AddOrUpdateQuery(uri, "name", "tom"); Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?name=tom"); uri = new Uri("http://www.baidu.com/"); uri2 = UriHelper.AddOrUpdateQuery(uri, "name", "tom"); Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?name=tom"); uri = new Uri("http://www.baidu.com/?"); uri2 = UriHelper.AddOrUpdateQuery(uri, "name", "tom"); Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?name=tom"); uri = new Uri("http://www.baidu.com?name=tom"); uri2 = uri.AddOrUpdateQuery("name", "mary"); Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?name=mary"); uri = new Uri("http://www.baidu.com"); uri2 = uri.AddOrUpdateQuery("t", "&"); Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?t=%26"); }