Я пытаюсь сделать запрос к Genius API, но я столкнулся с некоторыми проблемами, используя OkHTTP. Это мой небольшой скрипт я использую, чтобы сделать вызов:Запросить работу в почтальоне, но получить 403 в OkHTTP
public class OkHttpScript {
OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
Request request = new Request.Builder()
.header("Authorization", "Bearer uDtfeAgTKL3_YnOxco4NV6B-WVZAIGyuzgH6Yp07FiV9K9ZRFOAa3r3YoxHVG1Gg")
.url(url)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}
public static void main(String[] args) throws IOException {
OkHttpScript okHttpScript = new OkHttpScript();
String response = okHttpScript.run("http://api.genius.com/songs/378195/");
System.out.println(response);
}
}
Когда я запускаю этот сценарий, я получаю 403 ошибку:
{"meta":{"status":401,"message":"This call requires an access_token. Please see: https://genius.com/developers"}}
Для справки, здесь картина меня делает точно такой же запрос с Почтальон, и она работает:
Любые идеи о том, что может быть проблема?
Edit:
Не уверены, если это нормально, но когда я печатаю мой объект запроса, который будет построен, я не вижу никаких признаков того, что есть заголовки в запросе:
Request{method=GET, url=http://api.genius.com/songs/378195/, tag=null}
ли что Я получил. Может ли это быть частью проблемы?
Edit2:
Nevermind, делая
System.out.println(newRequest.headers());
дает мне то, что я изначально поставил в:
Authorization: Bearer 4mfDBVzCnp2S1Fc0l0K0cfqOrQYjRrb-OHi8W1f-PPU7LNLI6-cXY2E727-1gHYR
Попробуйте использовать Wireshark, чтобы узнать, как отличается фактический HTTP-запрос. –