Как отправить данные в кодировке url с помощью метода post в java

Я пытаюсь отправить данные в кодировке url с помощью метода HttpURLConnection в java. Клиент поделился приведенной ниже строкой из тестера Soap UI в качестве образца запроса:

http://www.clienturl.com/payment?username=bk&password=bk&customerid=100039085&amountcredit=100&operationdate=2018-07-17&event=9977773&reference=2323900&account=00000000&valuedate=2018-07-17&terminal=00010

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

StringBuffer response = new StringBuffer();
    String EndPointURL = url;
    String requestXML = "username=bk&password=bk&customerid=78233209438&amountcredit=100&operationdate=2018-07-17&event=9977773&reference=13903232&account=000000&valuedate=2018-07-17&terminal=00010";
    String encodedData = URLEncoder.encode(requestXML, "UTF-8");
    System.out.println("Encoded data: " + encodedData);

    URL localURL = new URL(EndPointURL);
    HttpURLConnection con = (HttpURLConnection) localURL.openConnection();
    con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    con.setRequestProperty("Accept-Charset", charset);
    con.setRequestProperty("Content-Length", Integer.toString(encodedData.length()));
    OutputStream os = con.getOutputStream();
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
4 123
1

Ответы 1

если вы используете Okhttp3, используйте этот код:

OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "string-that-you-need-to-pass-in-body");
Request request = new Request.Builder()
  .url("url-string")
  .post(body)
  .addHeader("content-type", "application/x-www-form-urlencoded")
  .build();

Response response = client.newCall(request).execute();

Для Юнирест:

HttpResponse<String> response = Unirest.post("url-string")
  .header("content-type", "application/x-www-form-urlencoded")
  .body("string-that-you-need-to-pass-in-body")
  .asString();

Поверьте, вместо body нужно было бы использовать метод field, как в field ("имя пользователя", "имя пользователя") .field ("пароль", "пароль")

Prithvi Raj Mundur 11.04.2021 10:12

Другие вопросы по теме