Почему не работает curl, когда он проходит через Java? - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь отправить данные на внешний веб-сервис через java. Я попытался пройти через HttpsURLConnection, но при получении рукопожатия я получал сообщение genereri c internal_error и исчерпал предложения в Google, чтобы попытаться это исправить.

Я протестировал с помощью эквивалентного сценария cURL, и все прошло без проблем. Для более тщательного тестирования я добавил тот же сценарий в Java, используя процесс для его выполнения. Тем не менее, та же проблема сохраняется. Перед запуском этого процесса я вывел всю строку cURL и проверил, что она все еще работает, что она успешно выполнила. Однако при запуске через Java он не может сказать, что не может разрешить хост, а затем показывает строку токена и другую.

Это скрипт curl с заменой конфиденциальной информации:

curl -v -X POST %URL_HERE%
-H 'Accept: */*' 
-H 'Authorization: Bearer %LONG_STRING_HERE%' 
-H 'Content-Type: application/json' 
--data "@/Path/to/folder/file/Data_ee801ae52060.json" 

Затем выдается следующая ошибка:

* About to connect() to * port 80 (#0)
*   Trying 127.0.0.1... Connection refused
* couldn't connect to host
* Closing connection #0

curl: (7) couldn't connect to host
* getaddrinfo(3) failed for Bearer:80
* Couldn't resolve host 'Bearer'
* Closing connection #0

curl: (6) Couldn't resolve host 'Bearer'
* getaddrinfo(3) failed for %TOKEN_STRING_HERE%':80
* Couldn't resolve host '%TOKEN_STRING_HERE%''
* Closing connection #0

curl: (6) Couldn't resolve host '%PARTIAL_TOKEN_STRING_HERE%.
* getaddrinfo(3) failed for application:80
* Couldn't resolve host 'application'
* Closing connection #0

curl: (6) Couldn't resolve host 'application'...

До этой ошибки показывается, что используется порт 443. Может ли кто-нибудь из вас подумать о причине, по которой это может происходить?

1 Ответ

0 голосов
/ 23 января 2020

Я бы порекомендовал использовать PostMan https://www.getpostman.com/, который предлагает функцию автоматического преобразования curl в java, а также на другие языки.

Вот руководство по использованию этой функции: https://learning.getpostman.com/docs/postman/sending-api-requests/generate-code-snippets/

вот генерация вывода с использованием OkHttp для вашего примера:

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "@/Path/to/folder/file/Data_ee801ae52060.json");
Request request = new Request.Builder()
  .url("%URL_HERE%")
  .method("POST", body)
  .addHeader("Accept", "/")
  .addHeader("Authorization", "Bearer %LONG_STRING_HERE%")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...