Экранирование / кодирование заголовка для HTTP-запроса Java - PullRequest
0 голосов
/ 22 октября 2018

Я выполняю простой запрос Java HttpGet с ключом API, предоставленным в поле заголовка, называемом «авторизация».

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet get = new HttpGet("https://someURL.com");
get.setHeader("authorization", "myAPIKEyhere...");
CloseableHttpResponse = response = httpClient.execute(get);

Это прекрасно работает, если я запускаю код локально (и в Postman также), но если я разверну его на своем сервере (Google Cloud), я получу ошибку авторизации.Поскольку ключ API содержит какой-то специальный символ, такой как «.»или ":" Мне было интересно, нужно ли мне что-то экранировать или кодировать, и поиграл с URLEncode и экранированием, но ничего не помогло.

Это пример API-ключа:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcGlfdG9rZW5faWQzOiJjOGJhNDc0My0wNDgyLTQ2NWEtYmE2NS0wOGYzNTk1YTljNmIiLCJzY29wZSI6WyJzY29wZV9leGNoYW5nZV9sZWRnZXJfcmVhZCIsInNjb3BlX2V4Y2hhbmdlX2Z1bmRpbmdfcmVhZCIsInNjb3BlX2V4Y2hhbmdlX2Z1bnRpbmdfd3JpdGUiXSwidXNlcl9pZCI6Ijc5N2ZhY2EyLWQ2YzgtNGQ2Ny1hNzUzLTkyYzI2MjFkM2U1MyJ9.0h6w3nX4w3HO6r2DJl0W75fQ4VM8rItRgBkwQtqee88.V2: b4b82e785b0aaf1dcbd3c89e16b92532db3abc0b5c4115436b1fae31246aba430

Может длина это вопрос?Любые предложения, что может решить проблему?

1 Ответ

0 голосов
/ 22 октября 2018

Попробуйте использовать java.net.URLEncoder.encode(), чтобы избежать любых недопустимых символов.

Например:

get.setHeader("authorization", URLEncoder.encode("myAPIKEyhere...", "UTF-8"));
...