Retrofitを使用しており、ユーザーが入力した検索語に基づいてFlickRを照会する必要があります。 Retrofit/RESTの経験が限られているので、正しく設定しておきたいと思っています。任意のチュートリアル、アドバイス、および私のコードの解説をいただければ幸いです。更新プログラムで照会できない
私は正確に何が入力されるべきかわからない「不確かな」アイテムのいくつかにラベルを付けました。 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);
}
}
ありがとう:ここ
は2を改造する移行についていくつかの情報です。私はそれを試していますが、私はあなたが私の質問の写真検索部分を削除したことに気付きました。 https://www.flickr.com/services/api/flickr.photos.search.html – tccpg288
http/RESTについてもう少し学ぶことをお勧めします。 「?」の後に続くものはすべて?クエリパラメータです。 naschは、method = flickr.photos.searchをメソッドパラメータに変換しました。したがって、getPhotos( "flickt.photos.search")を呼び出して同じメソッド値を持つ必要があります。もう1つは、検索の次のフィールドです。私はpostman(ブラウザプラグイン)やカールのように、何が起こっているのかを理解するためにhttpクライアントを使ってテストすることをお勧めします。 – Lxu
http/RESTチュートリアルに関するご意見はありますか?私はそれを少し読んだが、包括的なチュートリアルは有益だろう。 – tccpg288