Добавление пользовательского заголовка с использованием HttpURLConnection - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь отправить запрос http GET. Вот как выглядит запрос:

https://example.com/verify?name="A"&grade="A"

Header: "myheader":"abcde1213"

Это пользовательский заголовок, который аутентифицирует отправителя этого запроса.

Я попробовал это, используя Postman и curl, и это работает. Однако, когда я пытаюсь сделать это в коде, используя HttpURLConnection в Android, я всегда получаю ошибку 401 от сервера, указывающую, что аутентификация вышеуказанного ключа не работает.

Что я добавил в коде:

URL obj = new URL(GetURL);
HttpURLConnection con = obj.openConnection();
 con.setRequestMethod("GET");
con.addRequestProperty("myheader","abcde1213");

Я даже выполнил getRequestProperty («myheader») и подтвердил, что он возвращает правильное значение.

Однако сервер не принимает это значение и выдает ошибку 401. При дальнейшем расследовании выясняется, что параметры http-заголовка и заголовки разные. Вышеупомянутые функции addRequestParameter или setRequestParameter только добавляют или обновляют параметры http-запроса и не устанавливают заголовки.

Из быстрого онлайн-поиска я не вижу подходящего метода в HttpURLConnection, чтобы добавить заголовок. Пожалуйста, предложите, как мы могли бы сделать это.

Как упомянуто выше, этот http-запрос с вышеуказанным заголовком работает на curl и Postman без каких-либо ошибок - что говорит мне, что запрос и аутентификация с использованием заголовков работают. Тем не менее, заголовок не устанавливается правильно с использованием вышеупомянутого класса HttpUrlConnection.

Заранее спасибо!

Редактировать: я просмотрел ссылку, которой поделились. У парня, который задал вопрос, вероятно, была та же проблема, что и у меня, но предлагаемые решения, похоже, совсем другие. Здесь я пытаюсь авторизовать пользователя с помощью настраиваемого заголовка в запросе http, который уникален для сервера Rest API, с которым я разговариваю.

Я не могу добавить этот пользовательский заголовок. Я уже попробовал большинство решений, предложенных до публикации здесь.

Примечание: хотел повторить - вышеуказанный запрос работает на curl и Postman. Почтальон имеет возможность генерировать код, необходимый для запроса, но для Java он использует только некоторую библиотеку, а не метод HttpURLConnection.

1 Ответ

0 голосов
/ 15 марта 2019

любезно используйте вот так:

URL url = new URL("your string url");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
String token = "" + new String(accessToken);
con.setRequestMethod("GET");
con.setRequestProperty("AuthToken", token);
con.setReadTimeout(15000);
con.setConnectTimeout(15000);
con.setDoOutput(false);
...