Невозможно сделать ПАТЧ на w REST API через JAVA - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу вызвать API с другим методом:

Публикация и получение в порядке с использованием HttpClient

Я не могу сделать методы PATCH и удалить, кто-нибудь реализовал такую ​​вещь?и как?

Метод Post 1

public static String sendPost(String requestURL, Map<String, String> headers, String postParameters,
        boolean withProxy) throws IOException {

    HttpURLConnection con = createProxyHttpConnection(requestURL, withProxy);
    con.setRequestMethod("POST");
    con.setDoOutput(true);

    for (Map.Entry<String, String> entry : headers.entrySet()) {
        con.setRequestProperty(entry.getKey(), entry.getValue());

    }
    DataOutputStream wr = new DataOutputStream(con.getOutputStream());
    wr.writeBytes(postParameters);
    String response = IOUtils.toString(con.getInputStream(), "UTF-8");

    wr.close();
    con.disconnect();
    return response;

}

Метод Post 2

public static HttpResponse sendPostBis(String requestURL, Map<String, String> headers, String payload,
        boolean withProxy) throws IOException {

    StringEntity sEntity = new StringEntity(payload,
            ContentType.APPLICATION_FORM_URLENCODED);

    HttpClient httpClient = HttpClientBuilder.create().build();
    HttpPost request = new HttpPost(requestURL);
    for (Map.Entry<String, String> entry : headers.entrySet()) {
        request.addHeader(entry.getKey(), entry.getValue());

    }
    request.setEntity(sEntity);

    HttpResponse response = httpClient.execute(request);
    return response;

}

Я использую метод 1 для POST с параметрами и метод 2 для POST сjson body

Сообщение об ошибке (то же самое, что я получу, если я изменю метод на POST вместо PATCH в SoapUI)

{"error":"No route found for \u0022POST \RESOURCE","message":"No route found for \u0022POST RESOURCE"}

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Решено:

Изменить HttpPost request = new HttpPost(requestURL); на HttpPatch request = new HttpPatch(requestURL);

Также возникла проблема с моим URL (https), поэтому спасибо @Ivan Jadric

0 голосов
/ 04 декабря 2018

Без предоставления какого-либо кода я бы лучше всего предположил, что сеть, через которую вы пытаетесь выполнить эти запросы PATCH и DELETE, заблокировала эти HTTP-глаголы, и, следовательно, вы не можете их сделать.Большинство инструментов сетевой безопасности считают любые глаголы, отличные от GET и POST, небезопасными и поэтому помещают их в черный список

...