在Java中,發送POST請求并傳遞JSON數據是非常常見的需求。本文將介紹如何使用Java發送POST請求并傳遞JSON數據。
首先,我們需要使用Java中的HttpURLConnection類來發送POST請求。以下是示例代碼:
URL url = new URL("http://example.com/api"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setDoOutput(true); String jsonInputString = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}"; try(OutputStream os = conn.getOutputStream()) { byte[] input = jsonInputString.getBytes("utf-8"); os.write(input, 0, input.length); }
在這個示例代碼中,我們首先創建了一個URL對象來指定要發送請求的地址。然后,我們創建了一個HttpURLConnection對象,并使用setRequestMethod()方法將其設置為POST請求。使用setRequestProperty()方法設置請求頭中的Content-Type為application/json,表明我們要發送的數據為JSON格式。
接著,我們調用conn.setDoOutput(true)方法來啟用輸出流,然后通過調用conn.getOutputStream()方法獲取輸出流并將JSON數據寫入流中。
最后,我們可以通過調用conn.getResponseCode()方法來獲取響應碼,并通過調用conn.getInputStream()方法來獲取響應數據。以下是完整的示例代碼:
URL url = new URL("http://example.com/api"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setDoOutput(true); String jsonInputString = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}"; try(OutputStream os = conn.getOutputStream()) { byte[] input = jsonInputString.getBytes("utf-8"); os.write(input, 0, input.length); } int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { try(BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"))) { StringBuilder response = new StringBuilder(); String responseLine = null; while ((responseLine = br.readLine()) != null) { response.append(responseLine.trim()); } System.out.println(response.toString()); } } else { System.out.println("POST request failed"); }
在這個完整的示例代碼中,我們首先獲取響應碼,如果響應碼為200,則使用InputStreamReader將輸入流轉換為BufferedReader,并使用readLine()方法逐行讀取響應數據,并使用StringBuilder將其拼接起來。最后,我們可以將響應數據輸出到控制臺或其他適當的位置。