【发布时间】:2017-12-16 22:15:44
【问题描述】:
在我们的项目中,我们成功地使用了 HttpClient Per BaseAddress (Domain) 模式的一个实例。例如,对 api.externalservice.com 的所有请求都来自同一个 HttpClient。我们的代码旨在处理此类请求。 现在,我们需要调用两个不同的子域(api1.externalservice.com 和 api2.externalservice.com)。一个 HttpClient 实例是否仍足以处理这两个子域的请求和响应?还是我们需要两个 HttpClient 实例(一个用于 api1.externalservice.com,一个用于 api2.externalservice.com)?这对我们改变或不改变我们的代码结构很重要。
【问题讨论】:
-
这取决于你如何使用 HttpClient。您不想重新设置默认标头或基地址,但您可以使用
SendAsync和新的HttpRequestMessages,无论线程如何。请参阅my blog post 或阅读其底部链接的文章。 -
谢谢。在我在这里问这个问题之前,我阅读了您的博客文章 Crowcoder。但我的问题有点不同。如何为域的不同子域使用相同的 HttpClient?在我的场景中,BaseAddress 是 externalservice.com,我们应该访问的子域是 api1.externalservice.com 和 api2.externalservice.com
-
如果只有几个,那么每个子域使用一个客户端应该没问题,但要使用相同的客户端,您根本不会设置
BaseAddress,您可以在HttpRequestMessage上设置 url而是。 -
谢谢。现在很清楚了。我刚刚了解了您博客文章的食谱:您有许多不同的 API 可供调用,甚至可能经常在每个软件版本部分添加新的 API。
标签: c# httpclient