如何为改造 POST 调用设置动态端点?

Ral*_*kum 5 rest android retrofit

我从服务器收到(步骤 1)一个soapString,我想将此字符串转发(步骤2)到另一台服务器。

public interface StepTwoRestAdapter {
        @Headers({"Content-Type:text/xml"})
        @POST("/services/step2/forwardSoap")
        Observable<String> order(@Body SoapString soapString);
}
Run Code Online (Sandbox Code Playgroud)

在上面的这种情况下,“/webservices/step2/forwardSoap”的 afgter my.server.com 始终保持不变。我怎样才能使这部分变量?

这里的技巧是,在第一个响应的响应中指定了第二个服务器(用于第 2 步)。

编辑:现在,我使用@Tabish Hussain 的提议

public interface StepTwoRestAdapter {
    @Headers({"Content-Type:text/xml"})
    @POST("/{urlPath}")
    Observable<String> order(@Body SoapString soapString, @Path("urlPath") String urlPath);
Run Code Online (Sandbox Code Playgroud)

}

然后我打电话

 restAdapter.create(StepTwoRestAdapter.class).order(new TypedString(soapString), uriPath)
Run Code Online (Sandbox Code Playgroud)

而我的 uriPath 是“services/step2/forwardSoap”

但是改造然后调用:https : //my.server.com/services%2Fstep2%2FforwardSoap

如您所见,“/”被“%2F”替换

Tab*_*ain 6

像这样做

public interface StepTwoRestAdapter {
    @Headers({"Content-Type:text/xml"})
    @POST("/services/{soapString}/forwardSoap")
    Observable<String> order(@Path("soapString") SoapString soapString);
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*ura 5

检查此链接,您应该能够在那里找到答案:

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);
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Retrofit 1,请检查以下内容:

https://medium.com/@kevintcoughlin/dynamic-endpoints-with-retrofit-a1f4229f4a8d#.7atwl0o3t