Oto, co musisz zrobić:
- Pobierz Apache HttpClient, umożliwi to złożenie wymaganego żądania
- Utwórz z nim żądanie HttpPost i dodaj nagłówek „application / x-www-form-urlencoded”
- Utwórz StringEntity, do którego przekażesz JSON
- Wykonaj połączenie
Kod z grubsza wygląda (nadal będziesz musiał go debugować i sprawić, by działał)
//Deprecated
//HttpClient httpClient = new DefaultHttpClient();
HttpClient httpClient = HttpClientBuilder.create().build(); //Use this instead
try {
HttpPost request = new HttpPost("http://yoururl");
StringEntity params =new StringEntity("details={\"name\":\"myname\",\"age\":\"20\"} ");
request.addHeader("content-type", "application/x-www-form-urlencoded");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
//handle response here...
}catch (Exception ex) {
//handle exception here
} finally {
//Deprecated
//httpClient.getConnectionManager().shutdown();
}
Możesz skorzystać z biblioteki Gson, aby przekonwertować swoje klasy Java na obiekty JSON.
Utwórz klasę pojo dla zmiennych, które chcesz wysłać zgodnie z powyższym przykładem
staje się
po ustawieniu zmiennych w klasie pojo1 możesz wysłać to za pomocą następującego kodu
i to jest import
i dla GSON
źródło
Odpowiedź @ momo dla Apache HttpClient, wersja 4.3.1 lub nowsza. Używam
JSON-Java
do budowy mojego obiektu JSON:źródło
Prawdopodobnie najłatwiej jest użyć HttpURLConnection .
http://www.xyzws.com/Javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139
Użyjesz JSONObject lub cokolwiek innego, aby zbudować JSON, ale nie do obsługi sieci; musisz go serializować, a następnie przekazać do połączenia HttpURLC POST.
źródło
j.toString()
.źródło
Wypróbuj ten kod:
źródło
application/json
zarówno jako nagłówek akceptacji, jak i typ zawartościDefaultHttpClient
to, że jest przestarzałe.Znalazłem to pytanie, szukając rozwiązania, w jaki sposób wysłać żądanie postu od klienta Java do punktów końcowych Google. Powyższe odpowiedzi, prawdopodobnie poprawne, ale nie działają w przypadku punktów końcowych Google.
Rozwiązanie dla punktów końcowych Google.
Nagłówek typu treści musi być ustawiony na „application / json”.
Z pewnością można to zrobić również za pomocą HttpClient.
źródło
Możesz użyć następującego kodu z Apache HTTP:
Dodatkowo możesz utworzyć obiekt Json i wstawić pola do obiektu w ten sposób
źródło
W przypadku języka Java 11 możesz użyć nowego klienta HTTP :
Możesz użyć wydawcy z InputStream, String, File. Konwertując JSON na String lub IS, możesz dzięki Jacksonowi.
źródło
Java 8 z apache httpClient 4
źródło
Polecam żądanie http oparte na apache http api.
Jeśli chcesz wysłać
JSON
jako treść żądania, możesz:Zdecydowanie polecam przeczytać dokumentację przed użyciem.
źródło