使用参数创建自己的 Uri
Create own Uri with parameters
我尝试使用一些参数创建我自己的 Uri。我写了这个但它不起作用:
string url = "http://arweb.elwin013.com/api/rest/tag/getNearestTags?latitude=" + lat.ToString("0.00000") + "&longitude=" + lon.ToString("0.00000") + "&distance=100000";
var response = await client.GetAsync(new Uri(url));
知道为什么吗?
您的问题是 ToString
方法将数字转换为带有 ,
的字符串。这会破坏服务器,使其 return 出现 http-500 错误。
要修复代码,请确保像这样使用 ToString
overload that accepts an InvariantCulture:
decimal lat = 1.25M;
decimal lon = 2.25M;
string url = "http://arweb.elwin013.com/api/rest/tag/getNearestTags?latitude=" +
lat.ToString("0.00000",CultureInfo.InvariantCulture) +
"&longitude=" +
lon.ToString("0.00000",CultureInfo.InvariantCulture) +
"&distance=100000";
var u = new Uri(url);
Debug.WriteLine(u); // use this to verify how your real Url would look
var response = await client.GetAsync(u);
您也可以使用 UriBuilder class 来构造您的 Uri:
var builder = new UriBuilder {
Scheme = "http"
, Host ="arweb.elwin013.com"
, Path = "api/rest/tag/getNearestTags"
, Query = String.Format(
CultureInfo.InvariantCulture,
"latitude={0:0.00000}&longitude={1:0.00000}&distance=100000",
lat,
lon)
};
var response = await client.GetAsync(builder.Uri);
如果您必须构建复杂的 Uri,这可能会让事情变得更有条理、更易于维护。
我尝试使用一些参数创建我自己的 Uri。我写了这个但它不起作用:
string url = "http://arweb.elwin013.com/api/rest/tag/getNearestTags?latitude=" + lat.ToString("0.00000") + "&longitude=" + lon.ToString("0.00000") + "&distance=100000";
var response = await client.GetAsync(new Uri(url));
知道为什么吗?
您的问题是 ToString
方法将数字转换为带有 ,
的字符串。这会破坏服务器,使其 return 出现 http-500 错误。
要修复代码,请确保像这样使用 ToString
overload that accepts an InvariantCulture:
decimal lat = 1.25M;
decimal lon = 2.25M;
string url = "http://arweb.elwin013.com/api/rest/tag/getNearestTags?latitude=" +
lat.ToString("0.00000",CultureInfo.InvariantCulture) +
"&longitude=" +
lon.ToString("0.00000",CultureInfo.InvariantCulture) +
"&distance=100000";
var u = new Uri(url);
Debug.WriteLine(u); // use this to verify how your real Url would look
var response = await client.GetAsync(u);
您也可以使用 UriBuilder class 来构造您的 Uri:
var builder = new UriBuilder {
Scheme = "http"
, Host ="arweb.elwin013.com"
, Path = "api/rest/tag/getNearestTags"
, Query = String.Format(
CultureInfo.InvariantCulture,
"latitude={0:0.00000}&longitude={1:0.00000}&distance=100000",
lat,
lon)
};
var response = await client.GetAsync(builder.Uri);
如果您必须构建复杂的 Uri,这可能会让事情变得更有条理、更易于维护。