我从服务器收到(步骤1)一个soapString,我想将(步骤2)此字符串转发给另一台服务器。
public interface StepTwoRestAdapter {
@Headers({"Content-Type:text/xml"})
@POST("/services/step2/forwardSoap")
Observable<String> order(@Body SoapString soapString);
}
在上面的这种情况下,afgter my.server.com即“/ webservices / step2 / forwardSoap”始终是常量。如何使这部分变量?
这里的技巧是,在第一个响应的响应中指定第二个服务器(用于步骤2)。
编辑: 现在,我使用@Tabish Hussain的提案
public interface StepTwoRestAdapter {
@Headers({"Content-Type:text/xml"})
@POST("/{urlPath}")
Observable<String> order(@Body SoapString soapString, @Path("urlPath") String urlPath);
}
然后我打电话
restAdapter.create(StepTwoRestAdapter.class).order(new TypedString(soapString), uriPath)
而我的uriPath是“services / step2 / forwardSoap”
但改装然后调用: https://my.server.com/services%2Fstep2%2FforwardSoap
正如您所见,'/'被“%2F”取代
答案 0 :(得分:3)
这样做
public interface StepTwoRestAdapter {
@Headers({"Content-Type:text/xml"})
@POST("/services/{soapString}/forwardSoap")
Observable<String> order(@Path("soapString") SoapString soapString);
}
答案 1 :(得分:2)
检查此链接,您应该可以在那里找到答案:
https://futurestud.io/tutorials/retrofit-2-how-to-use-dynamic-urls-for-requests https://futurestud.io/tutorials/retrofit-2-how-to-change-api-base-url-at-runtime-2
我认为最简单的方法是:
public interface StepTwoRestAdapter {
@Headers({"Content-Type:text/xml"})
@POST
Observable<String> order(@Url String url, @Body SoapString soapString);
}
如果您使用的是Retrofit 1,请检查以下内容:
https://medium.com/@kevintcoughlin/dynamic-endpoints-with-retrofit-a1f4229f4a8d#.7atwl0o3t