我正在使用Retrofit,我想根據用戶輸入的搜索詞來查詢FlickR。我想確保我的設置正確,因爲我對Retrofit/REST的經驗有限。任何教程,建議和評論我的代碼將不勝感激。無法通過更新查詢
我已經標記了一些項目「UNSURE」,我不知道應該輸入什麼。用REST,「q」總是用來表示查詢嗎?
在一天結束的時候,我想在圖片搜索結果顯示在一個GridView和可供選擇的用戶:
public class MainActivity extends AppCompatActivity {
private EditText mSearchTerm;
private Button mRequestButton;
private String mQuery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSearchTerm = (EditText) findViewById(R.id.ediText_search_term);
mRequestButton = (Button) findViewById(R.id.request_button);
mRequestButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mQuery = mSearchTerm.getText().toString();
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.flickr.com/services/rest/")
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiInterface apiInterface = retrofit.create(ApiInterface.class);
Call<List<Photo>> call = apiInterface.getPhotos(mQuery);
call.enqueue(new Callback<List<Photo>>() {
@Override
public void onResponse(Call<List<Photo>> call, Response<List<Photo>> response) {
}
@Override
public void onFailure(Call<List<Photo>> call, Throwable t) {
}
});
}
});
}
//Synchronous vs. Asynchronous
public interface ApiInterface {
@GET("?&method=flickr.photos.search&tags=<mQuery>&api_key=1c448390199c03a6f2d436c40defd90e&format=json") //
Call<List<Photo>> getPhotos(@Query("q") String photoSearchTerm);
}
}
感謝您的幫助。我會試驗它,但是我注意到你刪除了我的查詢的照片搜索部分。我基於這個文檔:https://www.flickr.com/services/api/flickr.photos.search.html – tccpg288
我建議你學習一些關於HTTP/REST的更多信息。 「?」之後的所有內容是查詢參數。 nasch將method = flickr.photos.search轉換爲方法參數。所以你需要調用getPhotos(「flickt.photos.search」)來獲得相同的方法值。另一個是搜索中的下一個字段。我建議你使用http客戶端來測試它,以瞭解發生了什麼,比如郵遞員(瀏覽器插件)或捲曲。 – Lxu
非常感謝,您對http/REST教程有任何建議嗎?我已閱讀了一些內容,但綜合教程將會有所幫助。 – tccpg288