喬納森已經讓你滿意了代碼的代碼,但我認爲你的問題更多是入門級的「我如何使用它?」問題,對吧?
因此,基本上您發佈的代碼會創建Retrofit
實例。它是一個能夠創建API接口對象的對象。一個Retrofit
對象處理一個基本URL。
通過創建interface
s來定義api端點和預期響應。使用實例從網站:
端點接口
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
然後使用您創建的改造實例,您可以通過調用
GitHubService service = retrofit.create(GitHubService.class);
和簡單的發送請求實例化這個接口的實現通過撥打電話
Call<List<Repo>> repos = service.listRepos("octocat");
repos.enqueue(callback) //add a callback where you can handle the response
示例pos Jonathan使用RxJava調用適配器,但現在應該略過這部分,以使自己更容易。
編輯:添加評論中請求的示例。
這個API的終點 - >https://api.textgears.com/check.php?text=I+is+an+engeneer!&key=DEMO_KEY
你需要
@GET("check.php")
Call<YourResponseClass> performCheck(@Query("text") String text, @Query("key") apiKey);
這也是一個有趣的情況下,你肯定需要將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,但它仍然是一個單獨的東西,所以讓他一次添加一塊磚塊:) – LukeJanyga
她:)但謝謝你,這個解釋非常有幫助! – Ang