如何将绝对URL传递给Zebble中的Api.Get方法?

时间:2017-04-14 07:04:28

标签: xamarin xamarin-zebble zebble

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

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。

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

另一个奇怪的事情是,如果我插入一个伪URL(例如http://www.yahoo.com)作为Api.Base.Url值并运行该项目,则会发生以下错误。 Error when adding a fake URL for Api.Base.Url

因此,如果我们需要在一个项目中向不同URL中的不同端点发出请求,我们该如何实现?

1 个答案:

答案 0 :(得分:0)

您的假设不正确。当你打电话:

Api.Get<TResponse>(someUrl);

然后:

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

示例:

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

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

然后,以下行会向&#34; https://my-server.com/api/hello&#34;发送HTTP请求:

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

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

Api.Get<TResponse>("https://some-absolute-url.com/...");