Я создаю приложение в Android Studio, которое использует OkHttp для отправки вызовов GET Request в API Yelp Fusion.
Я проверил запрос в Postman с соответствующим токеном носителя аутентификации, и он работает.
Почтальон
Однако, когда я тестирую запрос на запрос в моем приложении для Android, это не так.
Для моего тестового примера я попыталсяиспользуйте http://httpbin.org, чтобы увидеть, проходили ли мои заголовки.И это было.
Request request_test = new Request.Builder()
.url("http://httpbin.org")
.get()
.addHeader("Authorization", "Bearer TOKEN")
.addHeader("cache-control", "no-cache")
.build();
Для моего результата я смог получить:
"headers": {
"Accept-Encoding": "gzip",
"Authorization": "Bearer TOKEN",
"Cache-Control": "no-cache",
"Host": "httpbin.org",
"User-Agent": "okhttp/3.12.0"
}
Вот код, который у меня есть:
public class OkHttpHandler extends AsyncTask<String,Void,String> {
OkHttpClient client = new OkHttpClient();
@Override
protected String doInBackground(String... params){
Request request = new Request.Builder()
.url("http://api.yelp.com/v3/businesses/search?term=restaurants&latitude=37.72856&longitude=-122.47688&radius=8046")
.get()
.addHeader("cache-control", "no-cache")
.addHeader("Authorization","Bearer TOKEN")
.build();
Log.d(TAG, request.toString());
try{
Response response = client.newCall(request).execute();
return response.body().string();
}
catch (Exception e){
}
return null;
}
Ожидаемый результат:
Yelp Response.
Фактический результат:
Выходной ответ: {"error": {"code": "VALIDATION_ERROR", "description":> "Authorization"является обязательным параметром. "," field ":" Authorization "," instance ":> null}}
Редактировать: я понял свою ошибку.Я использовал схему HTTP вместо https.