2016-12-13 10 views
1

(手順1)サーバーからsoapStringを受け取りました。(手順2)この文字列を別のサーバーに転送します。上記この場合 POSTポストコールのために動的エンドポイントを設定するにはどうすればよいですか?

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

、あるafgter my.server.comは "/ Webサービス/ STEP2/forwardSoap" 常に一定です。この部分をどのように変えることができますか?

ここでは、2番目のサーバー(手順2)が最初の応答の応答で指定されているということです。

EDIT: 今、私は@Tabishフセインからの提案を使用し

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

}

と私uriPathは「サービス/ STEP2/forwardSoapであるのに対し、私は

restAdapter.create(StepTwoRestAdapter.class).order(new TypedString(soapString), uriPath) 

呼び出します"

ただし、改造後に電話する: https://my.server.com/services%2Fstep2%2FforwardSoap

'/' は "%2F"

答えて

1

は、このリンクをチェックし、この

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

参照のコメント:パス "サービス/ STEP2/forwardSoap" は、 "サービス%2Fstep2%の2FforwardSoap" –

+0

としてそれを行うに置き換えられました私は.. "/"と完全なURLではなく、パス内のsoapStringとしてだけ渡す –

+0

ええ、そうでした:http://stackoverflow.com/questions/41125673/retrofit-path-with-multiple-segments –

1

ようにそれを実行し、あなたがそこに答えを見つけることができるはずによって置き換えたあなたが見ることができるように:

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); 
} 

あなたは改修に1枚の小切手を使用している場合は、この1:

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

+0

残念なことにRetrofit2。しかし、すぐに移行する必要があります。 –

関連する問題