GET 請求 - 含網址參數
以請求 https://api.github.com/search/users?q=chris930921 這個 API 為例,
此搜尋使用者 API,有一個 q 網址參數代表要搜尋的關鍵字。
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
MainActivity.java
public class MainActivity extends AppCompatActivity {
public interface ApiUri {
// 使用 @Query 代表加上網址參數,括號內輸入參數名稱,其後的 name 參數就代表其值。
@GET("/search/users")
Call<ResponseBody> searchUser(@Query("q") String name);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
.build();
ApiUri apiUri = retrofit.create(ApiUri.class);
// 設定要搜尋的字串為 chris930921,取得一個 request 物件。
Call<ResponseBody> call = apiUri.searchUser("chris930921");
// 發出 Request。
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
// 取得內容
try {
String result = response.body().string();
Log.d("MainActivity", result);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
t.printStackTrace();
}
});
}
}