Я пытаюсь создать java-программу, в которой я мог бы дать ей строку, вставить ее в Hastebin (www.hastebin.com) и распечатать URL-адрес вставки на консоли, и это код, который у меня есть: Main.java (Основной класс):
public class Main {
Hastebin hastebin;
static String randomString = "HELLO";
public static void main(String args[]) {
System.out.println(Hastebin.paste((randomString)));
}
}
Мой класс Hastebin.java:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Hastebin {
public static String paste(String content){
final HttpClient client = HttpClient.newHttpClient();
final HttpRequest request = HttpRequest.newBuilder(
URI.create("https://hastebin.com/documents")
).POST(HttpRequest.BodyPublisher.fromString(content).build());
final HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandler.asString());
final String responseContent = response.body();
final JSONObject responseJson = new JSONObject(responseContent);
final String key = responseJson.getString("key");
return "https://hastebin.com/" + key;
}
}
Мои ошибки:
Error:(14, 48) java: cannot find symbol symbol: method fromString(java.lang.String) location: interface java.net.http.HttpRequest.BodyPublisher Error:(17, 92) java: cannot find symbol symbol: method asString() location: interface java.net.http.HttpResponse.BodyHandler Error:(19, 15) java: cannot find symbol symbol: class JSONObject location: class Hastebin Error:(19, 45) java: cannot find symbol symbol: class JSONObject location: class Hastebin
Буду очень признателен за помощь.




Учитывая, что вы работаете с JDK-11 (наличие пакета java.net.http, не вызывающего жалоб), используемые вами API изменились на BodyPublishers.ofString и BodyHandlers.ofString. Вы можете обновить их в своем коде как:
final HttpRequest request = HttpRequest.newBuilder(URI.create("https://hastebin.com/documents"))
.POST(HttpRequest.BodyPublishers.ofString(content)).build();
final HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
Примечание: API были изменены на то, что они были изначально разработаны, как во время модуля инкубатора в Java9, поэтому вы можете найти документацию с предыдущими синтаксисами.
Кроме того: вот запрос образец для POST от openjdk.
Кроме того, как упоминалось в примере ПОЛУЧИТЬ JSON, если вы хотите прочитать ответ как настраиваемый объект, вы можете использовать настраиваемый сопоставитель объектов как:
class UncheckedObjectMapper extends com.fasterxml.jackson.databind.ObjectMapper {
Map<String, String> readValue(String content) {
try {
return this.readValue(content, new com.fasterxml.jackson.core.type.TypeReference() {
});
} catch (IOException ioe) {
throw new CompletionException(ioe);
}
}
}
а затем прочтите свой ответ как
final HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
Map<String, String> mappedResponse = new UncheckedObjectMapper().readValue(response.body());
Чтобы разрешить приведенные выше полностью определенные имена классов, вам потребуются зависимости по артефактам jackson-databind и jackson-core.
Примечание: вы можете использовать readValue в более общей реализации для возврата пользовательского типа объекта.
... а для JSONObject вам нужно будет убедиться, что Библиотека Джексона добавлен в зависимость вашего проекта.
Я не знаю, откуда мне скачать Джексона, у вас есть для меня ссылка?
@TalMoshel Одна возможная ссылка может быть maven central - search.maven.org/artifact/com.fasterxml.jackson.core/…
Что это? Я проверил сайт, но ничего не понимаю.
@TalMoshel Это репозиторий зависимостей. Вы можете проверить параметр загрузки и загрузить jar и включить его в качестве внешней зависимости в свой проект.
Я загрузил его и установил как внешнюю зависимость, но я все еще не могу импортировать JSONObject. любая помощь?
@TalMoshel обновили ответ кодом, чтобы преобразовать тело строки, например, в Map, и предоставили ссылки на зависимости, необходимые для кода.
Это должен быть
ofString, а неfromStringилиasString. Вам также не хватает импортаJSONObject.