HttpURLConnection responseCode 405 метод не допускается ошибка - PullRequest
0 голосов
/ 04 июля 2018

Мы пытаемся отправить запрос на интеграцию веб-API от внешнего провайдера. Они используют IP-авторизацию, и наш IP-адрес определен в их системе интеграции.

У нас ошибка 405 при создании HttpUrlConnection, и мы не можем отправить запрос на этот URL. Когда мы пытаемся создать HttpUrlConnection с основным доменом "http://api.relateddigital.com" с ошибкой 403.

Фирма провайдера говорит: «У нас нет никаких ограничений для ваших IP-адресов. Ошибка связана с вашей сетью». Как мы можем решить это?

Наш код:

public class Main {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        final URL url=new URL("http://api.relateddigital.com/resta/api/auth/login");
        final HttpURLConnection connection=(HttpURLConnection)url.openConnection();
        System.out.println("connection.getResponseCode() :: "  + connection.getResponseCode());
        //the output is 405
        connection.setRequestMethod("POST");
        //Exception in thread "main" java.lang.IllegalStateException: connect in progress at sun.net.www.protocol.http.HttpURLConnection.setRequestMethod(Unknown Source)
    }

}

1 Ответ

0 голосов
/ 07 июля 2018

Я решил это благодаря @Chor Wai Chun.

Я забыл, что getResponseCode () должен быть после параметров подключения.

Спасибо всем!

Это сработало так:

final URL url = new URL("http://api.relateddigital.com/resta/api/Datawarehouse/InsertUpdateRowInDwTable");
        final HttpURLConnection connection = (HttpURLConnection) url.openConnection();

        connection.setRequestMethod("POST");
        connection.setDoOutput(true);
        connection.setRequestProperty("Content-Type", "application/json");
...
...
...
if ((connection.getResponseCode() < 200) || (connection.getResponseCode() >= 300))
        {
            final BufferedReader in = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
            final StringBuilder builder = new StringBuilder();
            String inputLine;
            while ((inputLine = in.readLine()) != null)
            {
                builder.append(inputLine);
            }

            System.out.println("Error builder::" + builder);
            in.close();
            return;
        }
...