Я пытаюсь вызвать API, который требует, чтобы я передал ключ API.
Мой Сервисный вызов с использованием HttpURLConnection работает отлично.
url = new URL("https://developers.zomato.com/api/v2.1/search?entity_id=3&entity_type=city&q=" + params[0]);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestProperty("user-key","9900a9720d31dfd5fdb4352700c");
if (urlConnection.getResponseCode() != 200) {
Toast.makeText(con, "url connection response not 200 | " + urlConnection.getResponseCode(), Toast.LENGTH_SHORT).show();
Log.d("jamian", "url connection response not 200 | " + urlConnection.getResponseCode());
throw new RuntimeException("Failed : HTTP error code : " + urlConnection.getResponseCode());
}
Тем не менее, я не уверен, как это работает с RetroFit, так как я постоянно звонил в Failure. Вот код, который я использую для того же вызова службы
@GET("search")
Call<String> getRestaurantsBySearch(@Query("entity_id") String entity_id, @Query("entity_type") String entity_type, @Query("q") String query,@Header("Accept") String accept, @Header("user-key") String userkey);
и я использую это, чтобы назвать это
Call<String> call = endpoint.getRestaurantsBySearch("3","city","mumbai","application/json","9900a9720d31dfd5fdb4352700c");
Все эти вызовы входят в метод OnFailure в RetroFit. Если я отправлю его без HeaderParameters, то он перейдет к успеху с 403, потому что мне, очевидно, нужно где-то передать ключ API, но я не могу понять, как.
@GET("search")
Call<String> getRestaurantsBySearch(@Query("entity_id") String entity_id, @Query("entity_type") String entity_type, @Query("q") String query);
Ошибка, которую я получаю в OnFailure:
java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 2 path $