我有一个正在使用的HAL
API,并且在许多情况下,我需要将请求(使用不同的方法)发送到从API返回的URL。这意味着我不想在改造API接口中对URL的路径进行硬编码,但是我想要的只是使用对该URL的改造发送一个简单的请求。我现在正在使用Volley,并且我知道可以为此目的使用OkHttp,但我想知道Retrofit中是否有一种不错的方法来执行此操作?
Square最近发布了Retrofit v2.0.0
BETA
,它具有对动态URL的内置支持。即使库是Beta版,根据Jake
Wharton
在DroidCon NYC
2015中告诉我们的内容,所有api都是稳定的,不会更改。我个人将其添加到我的作品中,由您自己决定。
如果您决定升级,将会发现以下链接很有用:
Jake Wharton演示@ DroidCon NYC 2015
有关更改的非常好的指南
简而言之,您现在可以使用没有任何路径的api批注(例如@GET或@POST等),然后将@URL传递给该方法将用来调用的api方法。
----------------改造1.x
我想出了一个很好的方法来做,并希望与大家分享。
诀窍是在创建RestAdapter时将动态URL用作端点,然后在API接口上使用空路径。
这是我的做法:
public RestAdapter getHostAdapter(String baseHost){
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(baseHost)
.setRequestInterceptor(requestInterceptor)
.build();
return restAdapter;
}
我使用此方法构建restAdapter,然后在界面中使用它:( 如果您的URL添加了查询参数 ,则此方法
将不起作用。有关此情况的解决方案,请参见下一个答案)
public interface General {
@GET("/")
void getSomething(Callback<SomeObject> callback);
}
最后像这样使用它们:
getHostAdapter("YOUR_DYNAMIC_URL").create(General.class)
.getSomething(new Callback<SomeObject>(){
...
})
希望能帮助到你。
问题内容: 我想在python中构造一个绝对路径,而与此同时却对诸如路径分隔符之类的东西一无所知。 edit0: 例如,在我的文件系统的根目录上(或在w32上)有一个目录,而我只想根据这些元素来构造该目录,并且(在w32上,我可能还需要一个磁盘ID,例如) 为了不必担心路径分隔符,显然是首选工具。但这似乎只会创建 相对 路径: 添加虚拟的第一元素(例如)没有任何帮助: 将第一个元素设为绝对显然会有
问题内容: 我有一个生产和开发服务器。问题是目录结构。 发展: 生产: 我如何在两个服务器上使用一个in 文件夹来使用该属性的相同路径?我可以在相对路径中使用技巧吗? 问题答案: 该URL 相对于CSS文件的位置,因此这应该对您有用: 相对URL返回两个文件夹,然后返回该文件夹-只要结构相同,它就适用于两种情况。 从https://www.w3.org/TR/CSS1/#url 部分URL是相对于
我正在尝试使用Reform2调用API获取数据。当我打开应用程序时,它会立即崩溃。我尝试了很多解决方案。我使用postman,但仍然可以看到所有数据都是json格式的。有人能帮我吗?非常感谢你 这是我的日志 ApiClient公司 } aip调用接口 这里是我的家片段。
问题内容: 给定两个绝对路径,例如 如何创建以第二条路径为基础的相对路径?在上面的示例中,结果应为: 问题答案: 有点回旋处,但是为什么不使用URI?它具有相对方法,可以为你进行所有必要的检查。 请注意,文件路径自Java 1.7起就存在,如@Jirka Meluzin在其他答案中指出的那样。
目前,我在改装方面面临一些问题。对于第二个请求,我提供给ReformInstance的URL正在更改。以下是代码: 以下是针对不同API请求的接口方法: UrlEndPoints.kt 对于第一个请求(loginUserByFacebook),我通过调试响应获得的URL是: http://test.sample.com/req/v1/user/auth/facebook 这很好,工作也很好。但是对
问题内容: 我正在使用Android应用程序中的API,所有JSON响应均如下所示: 问题是,我所有的POJO有,字段,里面领域是真正的POJO我想要的。 有什么方法可以创建Gson的自定义转换器以始终提取字段,因此改造会返回适当的POJO? 问题答案: 您将编写一个自定义反序列化器,该反序列化器返回嵌入的对象。 假设您的JSON是: 然后,您将获得一个POJO: 然后编写一个反序列化器: 现在,