Bahagian ini memperincikan bagaimana untuk membaca badan tindak balas dari permintaan pos dalam klien JAX-RS. Kaedah teras melibatkan penggunaan objek ClientResponse
yang dikembalikan oleh kaedah invoke()
WebTarget
. Objek ini menyediakan akses kepada kod status tindak balas dan entiti (badan tindak balas). Pendekatan khusus bergantung kepada jenis kandungan badan tindak balas. Untuk respons JSON, yang biasa, anda perlu menggunakan perpustakaan pemprosesan JSON seperti Jackson atau Gson. Anda juga perlu memasukkan kebergantungan Jackson dalam projek anda. Jackson dan Gson adalah pilihan yang popular kerana kelajuan dan kemudahan penggunaannya. Mereka menyediakan kaedah untuk secara langsung deserializing JSON ke dalam objek Java, mengelakkan parsing manual yang terdedah kepada kesilapan dan kurang efisien. Pastikan kelas Java anda dengan tepat mencerminkan struktur tindak balas JSON untuk deserialization yang lancar. Pertimbangkan untuk menggunakan anotasi seperti
import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import com.fasterxml.jackson.databind.ObjectMapper; //Jackson library public class ReadPostResponseBody { public static void main(String[] args) { Client client = ClientBuilder.newClient(); WebTarget target = client.target("http://your-api-endpoint.com/your-resource"); // Create a sample request entity (replace with your actual data) String requestBody = "{\"key1\":\"value1\", \"key2\":\"value2\"}"; Response response = target.request(MediaType.APPLICATION_JSON).post(Entity.json(requestBody)); if (response.getStatus() == 200) { //Check for successful response try { ObjectMapper objectMapper = new ObjectMapper(); YourResponseObject responseObject = objectMapper.readValue(response.readEntity(String.class), YourResponseObject.class); //Process responseObject System.out.println("Response: " + responseObject); } catch (Exception e) { e.printStackTrace(); } } else { System.err.println("Request failed with status code: " + response.getStatus()); } response.close(); client.close(); } //Define your response object structure public static class YourResponseObject { // Your class fields here } }
2xx (kejayaan): "http://your-api-endpoint.com/your-resource"
Proses badan tindak balas seperti biasa. Log ralat dan berpotensi memberikan maklum balas yang mesra pengguna. YourResponseObject
atau satu siri
pernyataan untuk menguruskan kod status yang berbeza dengan anggun. Balut kod anda di blok untuk menangani isu -isu yang berpotensi seperti: objectMapper.readValue()
IOException
: Masalah rangkaian, tamat masa sambungan. Pengendalian ralat yang teguh memastikan bahawa aplikasi anda tidak terhempas kerana kesilapan yang tidak dijangka dan membolehkan anda untuk mengendalikan senario kegagalan yang berbeza. Ingatlah untuk memberikan mesej ralat yang bermaklumat kepada pengguna atau log maklumat terperinci untuk debug. Atas ialah kandungan terperinci Baca Badan Respons dalam Pelanggan Jax-RS dari permintaan pos. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!