Мне нужно получить файл XML с сайта. Я учусь использовать Retrofit.
Мне нужно сделать запрос и присоединить мой ключ API через заголовок "X-AppId"
. Это должно выглядеть так:
X-AppId: my key.
Если я сделаю это из браузера, я получу ответ.
Через дооснащение я получаю доступ
ошибка 403 Запрещенный код = 403, сообщение = Запрещено, url = https: //
Подскажите, как правильно реализовано получение ответа от сервера code = 200
Вот моя реализация:
public interface myAPIinterface {
@GET("/api/ru/index/route/?from=Minsk&to=Warsaw")
Call<Routes> getProducts();
}
Это действие, при котором я вывожу в журнал:
private void getProducts(){
final ProgressDialog loading = ProgressDialog.show(this,"Fetching Data","Please wait...",false,false);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
Log.d(TAG, "getProducts");
httpClient.addInterceptor(new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request request = chain.request()
.newBuilder()
.addHeader("X-AppId:", "97377f7b702d7198e47a2bf12eec74")
.build();
return chain.proceed(request);
}
});
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://rasp.rw.by")
.addConverterFactory(SimpleXmlConverterFactory.create())
.build();
myAPIinterface api = retrofit.create(myAPIinterface.class);
Call<Routes> call = api.getProducts();
call.enqueue(new Callback<Routes>() {
@Override
public void onResponse(@NonNull Call<Routes> call, @NonNull Response<Routes> response) {
Log.d(TAG, "onResponse");
Log.d(TAG, String.valueOf(kk));
Log.d(TAG, String.valueOf(response));
loading.dismiss();}
@Override
public void onFailure(Call<Routes> call, Throwable throwable) {
loading.dismiss();
Log.d(TAG, "onFailure" + throwable);
}
});
это журнал:
Ответ {протокол = http / 1.1, код = 403, сообщение = запрещено,
URL = https://rasp.rw.by/api/ru/index/route/?from=Minsk&to=Warsaw}
если я беру сторонние сайты, где нет заголовков, я получаю ответ 200 без проблем. Что я делаю не так в этом случае? Спасибо.