Поддерживает ли jsoup запрос restful/rest

Подскажите пожалуйста, как создать запрос http(s) в jsoup с методом запроса PUT или DELETE?

Я наткнулся на эту ссылку: https://github.com/jhy/jsoup/issues/158 но ей уже несколько лет, так что, надеюсь, в этой библиотеке реализована некоторая спокойная поддержка.

Насколько я вижу объект HttpConnection, я могу использовать только методы запросов "get" или "post".

http://jsoup.org/apidocs/org/jsoup/helper/HttpConnection.html

http://jsoup.org/apidocs/org/jsoup/Connection.html

1 ответ

Решение

Jsoup не поддерживает методы PUT и DELETE. Поскольку это синтаксический анализатор, он не должен поддерживать эти операции. Что вы можете сделать, это использовать HttpURLConnection, который является тем же самым, что Jsoup использует внизу. При этом вы можете использовать любой метод, который вам нужен, и в конце концов проанализировать результат с помощью jsoup (если он вам действительно нужен). Проверьте этот код:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class Main {  

    public static void main(String[] args) {
        try {
            String rawData = "RAW_DATA_HERE";
            String url = "URL_HERE";
            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();

            //add reuqest header
            con.setRequestMethod("METHOD_HERE"); //e.g POST
            con.setRequestProperty("KEY_HERE", "VALUE_HERE"); //e.g key = Accept, value = application/json

            con.setDoOutput(true);

            OutputStreamWriter w = new OutputStreamWriter(con.getOutputStream(), "UTF-8");

            w.write(rawData);
            w.close();

            int responseCode = con.getResponseCode();

            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }

            in.close();

            System.out.println("Response code : " + responseCode);
            System.out.println(response.toString());

            //Use Jsoup on response to parse it if it makes your work easier.
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
Другие вопросы по тегам