ジョナサンあなたに喜んだあなたの質問は、より多くのエントリーレベルであると思います。「どうすれば使用できますか?」質問、そう?
基本的に、投稿したコードはRetrofit
インスタンスを作成します。これは、APIインターフェイスオブジェクトを作成できるオブジェクトです。 1つのRetrofit
オブジェクトが1つのベースURLを処理します。
interface
を作成して、apiエンドポイントと期待される応答を定義します。ウェブサイトからの例を使用する:
エンドポイントインタフェース
が
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
次に、作成したレトロフィットインスタンスを使用して、あなたは
GitHubService service = retrofit.create(GitHubService.class);
を呼び出すことで、このインタフェースの実装をインスタンス化し、単純にリクエストを送信することができます呼び出してAPIに転送
Call<List<Repo>> repos = service.listRepos("octocat");
repos.enqueue(callback) //add a callback where you can handle the response
JonathanはRxJavaコールアダプタを使用していますが、今はその部分をスキップして自分で簡単にする必要があります。
EDIT:コメントでリクエストされた例を追加します。このAPIエンドポイントの
- >
https://api.textgears.com/check.php?text=I+is+an+engeneer!&key=DEMO_KEY
は、あなたが最も確かにすべての要求にAPIKEYを追加する必要があるとして、これも興味深いケースである
@GET("check.php")
Call<YourResponseClass> performCheck(@Query("text") String text, @Query("key") apiKey);
必要です。しかし、毎回パラメータとして手動で追加するのは良い方法ではありません。解決策があります - Interceptor
。
public class ApiKeyRequestInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
final HttpUrl newUrl = request.url().newBuilder()
.addQueryParameter(Constants.API.PARAM_API_KEY, BuildConfig.NEWS_API_KEY) //add your api key here
.build();
return chain.proceed(request.newBuilder()
.url(newUrl)
.build());
}
}
、あなたのキーのために余分なフィールドを必要としない、とあなたは
にあなたの方法を減らすことができます(
OkHttpClient
を構築)、それを使用するには、この場合には
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new ApiKeyRequestInterceptor())
.build();
Retrofit = new Retrofit.Builder()
.baseUrl(Constants.API.BASE_URL)
.client(client)
.build();
をレトロフィットを伝えます
Call<YourResponseClass> performCheck(@Query("text") String text);
あなたは正しい人です、Rxは一歩ですが、それについて知り、学ぶことができて、素早くRxで対応する方が簡単です –
もちろん私はすべてのプロジェクトでRxを使用しますが、まだ別のものですから、一度に1つのレンガを追加させてください:) – LukeJanyga
彼女:)しかし、この説明は非常に役に立ちました! – Ang