如何从Retrofit调用dotnet API?

时间:2018-10-02 09:53:19

标签: android retrofit2

这是我第一次为项目使用dotNet Web API。 这是我的控制器的代码

public IEnumerable<Waybill> Get(string id_wb) {
    List<Waybill> lstWaybill = new List<Waybill>();
    lstWaybill = objway.GetWaybill(id_wb).ToList();
    return lstWaybill;
}

如果我使用以下链接进行调用,则该API可以很好地工作:

http://localhost:56127/api/waybill/?id_wb=00000093

但是我不知道如何从我的android应用中调用该链接(我正在使用翻新)

@GET("Waybill/{id_wb}/id_wb")
Call<Waybill> getWaybillData(@Path("id_wb") String id_wb);

1 个答案:

答案 0 :(得分:0)

共有3个选项。

首先是使用翻新的@Query批注。

@GET("Waybill/")
Call<Waybill> getWaybillData(@Query("id_wb") String id_wb);

第二个是@Path注释

@GET("Waybill/?id_wb={id_wb}")    // notice the difference in your code and my code
Call<Waybill> getWaybillData(@Path("id_wb") String id_wb);

第三选项是使用@Url注释。使用此选项,您需要在活动或片段中调用/使用getWaybillData()方法之前准备完全限定的URL。请记住,@Url方法会覆盖在Retrofit客户端中设置的基本URL。

@GET    // notice the difference in your code and my code
Call<Waybill> getWaybillData(@Url String completeUrl);

如果您遵循第3个选项,则需要在活动中准备完整的URL,如下所示。

String url = "http://<server_ip_address>:56127/api/waybill/?id_wb=00000093";
YourInterface api = ...
Call<Waybill> call = api.getWaybillData(url);
call.enqueue({/* implementation */});

我看到您提到的示例URL和Retrofit API界面中的用法有所不同。

在示例URL waybill中很小,在API接口中是Waybill。请确保您使用正确的URL。