3

我尝试使用以下代码获取产品:

public static async Task<List<Product>> GetProducts()
{
    return await Get<List<Product>>("http://locahost:5919/api/products");
}

但似乎 Get 方法只接受相对 URL,我必须在 Config.xml 文件中的 Api.Base.Url 设置中传递绝对 URL。

我还尝试在 return 语句之前通过 BaseUrl 属性分配绝对 URL,但它没有任何区别。

另一个奇怪的事情是,如果我插入一个假 URL(例如http://www.yahoo.com)作为 Api.Base.Url 值并运行项目,就会出现以下错误。 为 Api.Base.Url 添加虚假 URL 时出错

那么,如果我们需要在一个项目中向不同 URL 中的不同 End Points 发出请求,我们该如何实现呢?

4

1 回答 1

0

你的假设是不正确的。你打电话时:

Api.Get<TResponse>(someUrl);

然后:

  • 如果 someUrl 以http://https://开头,那么它将被视为绝对URL。
  • 否则,它将被视为相对,在这种情况下,为了找到绝对 Url,Zebble 将使用Api.Base.Url的配置值作为前缀。

例子:

如果在您的config.xml文件中,您有:

<Api.Base.Url>https://my-server.com</Api.Base.Url>

然后以下行将向“ https://my-server.com/api/hello ”发送 HTTP 请求:

Api.Get<TResponse>("api/hello");

但是 config.xml 文件中的Api.Base.Url的值将在以下调用中被忽略(因为它是绝对 url):

Api.Get<TResponse>("https://some-absolute-url.com/...");
于 2017-04-15T13:24:42.527 回答