Помогите разобраться почему происходит ошибка в post запросе и как сделать правильно? Java

делаю POST запрос по сайту https://belkacredit.ru/applica... tion/phone, необходимо отправить запрос в форму и получить ответ(откроется окно для подтверждения смс кода)

Вот форма, в которую отправляется запрос:

<input name="mobile_phone" type="tel" inputmode="tel" class="input not-empty" autocomplete="tel" actionname="mobile_phone" value="+7 (XXX) XXX XX XX">

вот как делаю в java:

public class BelkaCredit {
private final String URL = "https://belkacredit.ru/application/registration/phone";

void parsePhoneNumber(String number) throws IOException {

    Document doc = Jsoup.connect(URL)
            .header("Content-Type", "application/json")
            .header("Accept", "application/json")
            .followRedirects(true)
            .ignoreContentType(true)
            .userAgent("Mozilla/5.0")
            .data("phone_number", number)
            .post();
    System.out.println(doc);
}}

на выходе такая ошибка:

HTTP error fetching URL. Status=405, URL=[https://belkacredit.ru/application/registration/phone]

Может я что то не то делаю, прошу совета или помощи.


Ответы (2 шт):

Автор решения: Golibjon Odinaev

Ваш код потенциально может привести к исключению java.net.MalformedURLException, так как вы используете Jsoup.connect(URL), и URL – это строка без проверки на корректность URL-адреса.

Чтобы избежать этой ошибки, вам нужно обернуть блок кода в try-catch и обработать MalformedURLException. Вот исправленный код:

public class BelkaCredit {
    private final String URL = "https://belkacredit.ru/application/registration/phone";

    void parsePhoneNumber(String number) throws IOException {
        try {
            Document doc = Jsoup.connect(URL)
                    .header("Content-Type", "application/json")
                    .header("Accept", "application/json")
                    .followRedirects(true)
                    .ignoreContentType(true)
                    .userAgent("Mozilla/5.0")
                    .data("phone_number", number)
                    .post();
            System.out.println(doc);
        } catch (MalformedURLException e) {
            e.printStackTrace(); // или обработайте исключение по вашему усмотрению
        }
    }
}

Также обратите внимание, что вам нужно импортировать класс MalformedURLException:

import java.net.MalformedURLException;

Это позволит вам корректно обрабатывать исключения, связанные с URL-адресом.

→ Ссылка
Автор решения: Golibjon Odinaev

Кажется, у вас есть ошибка в теге <input> HTML и в параметре data в методе Jsoup.connect(). Вот исправленный код:

<input name="phone_number" type="tel" inputmode="tel" class="input not-empty" autocomplete="tel" actionname="mobile_phone" value="+7 (XXX) XXX XX XX">
public class BelkaCredit {
    private final String URL = "https://belkacredit.ru/application/registration/phone";

    void parsePhoneNumber(String number) throws IOException {
        Document doc = Jsoup.connect(URL)
                .header("Content-Type", "application/json")
                .header("Accept", "application/json")
                .followRedirects(true)
                .ignoreContentType(true)
                .userAgent("Mozilla/5.0")
                .data("mobile_phone", number)  // Updated parameter name to match your HTML input
                .post();
        System.out.println(doc);
    }
}


Я изменил атрибут `name` в теге `<input>` на "phone_number", чтобы он соответствовал параметру, передаваемому в методе `Jsoup.connect()`.
→ Ссылка