web-dev-qa-db-ja.com

レトロフィットget Stringレスポンス

Retrofitライブラリを使用して文字列応答のみを受信することは可能ですか?リンクがlocalhost // Register?handle = SomeIDのように見えるように、リンクにクエリを追加する必要がある状況があります

SomeIDは整数であり、これを行うと、サーバーから20文字で構成される文字列形式で応答を受け取ります。どうすればその応答を得ることができますか? Retrofitは、Json形式ではない応答も処理できますか?

また、これをどのように作成する必要があります:

@GET( "/ api/UserMainInformations")getUserMainInfo();を呼び出します。

これは他の呼び出しの例ですが、クエリに追加するだけなので、送信するモデルがありません。 Call <>に何を入れるべきですか?

15
user6038288

Apiから応答を取得し、次のような文字列に変換できます。

 public interface RetrofitService{
        @GET("/users")
        Call<ResponseBody> listRepos();//function to call api
    }

    RetrofitService service = retrofit.create(RetrofitService.class);
    Call<ResponseBody> result = service.listRepos(username);
    result.enqueue(new Callback<ResponseBody>() {

    @Override
    public void onResponse(Response<ResponseBody> response) {
        try {
            System.out.println(response.body().string());//convert reponse to string
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onFailure(Throwable t) {
        e.printStackTrace();
    }
});
20
SaravInfern

これを試して:

APIインターフェイス:

public interface APIService {
@GET("api/get_info")
    Call<ResponseBody> getInfo();//import okhttp3.ResponseBody;
}

API呼び出し:

// Retrofit service creation code skipped here
String json = retrofitService().getInfo().execute().body().string();

それは私のために働いた。 retrofit:2.1.0を使用します。

7
Mikhail