首页 > 解决方案 > Xamarin Forms - C# - HttpUtility.ParseQueryString - 自动格式化字符串?

问题描述

我正在使用 ParseQueryString 运算符执行基本 API 请求。

当我通过 ParseQueryString 传递特定值时,它会自动对其进行格式化。

例如,如果我通过 ParseQueryString 传递 example@example.com,则返回的结果将是:

示例%40example.com

服务器将返回一个空值。

但是,如果传递的值为:

示例@example.com

然后它将起作用。

我知道查询字符串通常没有“@”,但有没有办法将“@”传递给 API 服务器?

这是我的代码:

var client = new HttpClient();

var queryString = HttpUtility.ParseQueryString(string.Empty);

queryString["email"] = LoggedIn.LoggedInEmail;

var apiuri = "https://example.com/wp-json/wc/v3/customers?" + queryString;

Console.WriteLine(apiuri);

返回的 API 是:

https://example.com/wp-json/wc/v3/customers?email=example%40example.com

什么时候应该显示如下:

https://example.com/wp-json/wc/v3/customers?email=example@example.com

标签: c#jsonwordpressxamarin.formswordpress-rest-api

解决方案


HttpUtility.UrlDecode生成apiuri后尝试使用方法。

var client = new HttpClient();

var queryString = HttpUtility.ParseQueryString(string.Empty);

queryString["email"] = LoggedIn.LoggedInEmail;

var apiuri = "https://example.com/wp-json/wc/v3/customers?" + queryString;

var url = HttpUtility.UrlDecode(apiuri,Encoding.UTF8);
Console.WriteLine(url);

推荐阅读