为什么将 RequestUri 作为参数传递与在 HttpRequestMessage 中设置不同
Why is passing RequestUri as a param different than setting it in HttpRequestMessage
我有一个 HttpClient(由 IHttpClientFactory 生成),其 BaseAddress 为 'www.mydomain.com/3.0/'。我将使用不同的方法使用不同的路径访问该客户端。所以我首先设置一个 HttpRequestMessage。我注意到这两个实现的行为不同。
这个:
var message = new HttpRequestMessage(HttpMethod.Get, $"account-lookup/?query={email}")
{
Headers =
{
{ key, value }
}
};
有效。但是这个:
var message = new HttpRequestMessage()
{
Method = HttpMethod.Get,
Headers =
{
{ key, value }
},
RequestUri = new Uri($"account-lookup/?query={email}")
};
returns异常Invalid URI: The format of the URI could not be determined.
我们不能用这样的字符串创建新的 Uri,对吧。为什么我们没有 属性 或方法让我们传入路径字符串?我在内部假设 HttpRequestMessage 的构造函数将传递的 属性 附加或连接到 BaseAddress?
我could/should可能会做类似
的事情
RequestUri = new Uri(Client.BaseAddress + $"account-lookup/?query={email}")
但是以某种方式添加路径字符串会很好。
您必须指定 URL 是相对的,才能与基址结合:
var message = new HttpRequestMessage()
{
Method = HttpMethod.Get,
Headers = ...,
RequestUri = new Uri($"account-lookup/?query={email}", UriKind.Relative)
};
我有一个 HttpClient(由 IHttpClientFactory 生成),其 BaseAddress 为 'www.mydomain.com/3.0/'。我将使用不同的方法使用不同的路径访问该客户端。所以我首先设置一个 HttpRequestMessage。我注意到这两个实现的行为不同。
这个:
var message = new HttpRequestMessage(HttpMethod.Get, $"account-lookup/?query={email}")
{
Headers =
{
{ key, value }
}
};
有效。但是这个:
var message = new HttpRequestMessage()
{
Method = HttpMethod.Get,
Headers =
{
{ key, value }
},
RequestUri = new Uri($"account-lookup/?query={email}")
};
returns异常Invalid URI: The format of the URI could not be determined.
我们不能用这样的字符串创建新的 Uri,对吧。为什么我们没有 属性 或方法让我们传入路径字符串?我在内部假设 HttpRequestMessage 的构造函数将传递的 属性 附加或连接到 BaseAddress?
我could/should可能会做类似
的事情
RequestUri = new Uri(Client.BaseAddress + $"account-lookup/?query={email}")
但是以某种方式添加路径字符串会很好。
您必须指定 URL 是相对的,才能与基址结合:
var message = new HttpRequestMessage()
{
Method = HttpMethod.Get,
Headers = ...,
RequestUri = new Uri($"account-lookup/?query={email}", UriKind.Relative)
};