Descripción general de la comunicación HTTP
La comunicación HTTP tiene dos formas de publicar y obtener. El primero envía datos al servidor a través de la entidad del mensaje HTTP, que es muy seguro y no tiene límite en el tamaño de la transmisión de datos. texto. Sin embargo, la solicitud GET no no está preparada: la solicitud GET se usa principalmente para consultar (leer recursos), lo cual es eficiente. Las solicitudes de publicación se utilizan para operaciones de alta seguridad, como registro e inicio de sesión y escritura de datos en la base de datos.
Además de publicar y obtener, ¡hay otras formas de comunicarse con HTTP! Consulte el método de solicitud HTTP
Preparación antes de codificar
Antes de realizar la codificación, primero creamos un servlet, que recibe los parámetros del cliente (nombre y edad) y responde al cliente.
@WebServlet (urlPatterns = {"/Demo.do"}) Public Class DemosServlet extiende httpservlet {prive static final servidor versionUid = 1l; "); Respuesta.SetContentType (" Text/Html; Charset = Utf-8 "); String Name = SolicirParameter (" Nombre "); GE"); El servicio por get. Lanza ServiceTexception, ioException f-8 "); respuesta.setContentType (" text/html; charset = utf-8 "); string name = request. GetParameter (" name "); string age = request.getParameter (" edad ") ; ;}}
Use JDK para implementar la comunicación HTTP
Use UrlConnection para implementar solicitudes GET
Examinar un objeto java.net.url;
Obtenga una java.net.urlconnection a través del método OpenConnection () del objeto URL;
Obtenga el flujo de entrada a través del método getInputStream () del objeto URLConnection;
Lea el flujo de entrada;
Cerrar recursos.
Public void get () lanza la excepción {url url = nueva url ("http://127.0.0.1/http/demo.name=jack&age=10"); New BuffereRader (nuevo InputStreamReader (urlconnection.getInputStream (), "UTF-8")); ) {sb.append (línea + "/n");} system.out.println (sb.ToString ());}
Use httpurlconnection para implementar la solicitud posterior
java.net.httpurlconnection es una subclase de java.net.url, que proporciona más operaciones en http (métodos getxxx y setxxx). Esta clase define una serie de códigos de estado HTTP:
Public void post () lanza IOException {url url = new url ("http: //127.0.0.0.1/http/demo.do") setDooutput (verdadero); (httpurlconnection.getOutputStream ()); Flush (); ) {// Leer datos sb.append (línea + "/n");} system.out.println (sb.ToString ());}
Use httpclient para la comunicación http
HttpClient simplifica enormemente la implementación de la comunicación HTTP en JDK.
Dependencia de Maven:
<Spendency> <ProupId> org.apache.httpComponents </groupid> <artifactid> httpclient </arfactid> <versever> 4.3.6 </versión> </pendency>
Obtener solicitud
Public void httpClientget () lanza la excepción {// Crear el objeto HttpClient httpClient Client = httpclients.createDefault (); 40 "); // llame al método de ejecución del objeto httpClient para obtener la respuesta httpesponse respuesta = cliente.execute (get); // llamar httpesponse El método getEntity del objeto SE obtiene la entidad de respuesta httpentity httpentity = respuesta.getIntity ( ); / Use la clase de herramienta EntityUtils para obtener la cadena de cadena de respuesta Resultado = EntityUtils.tostring (httpentity, "UTF-8");
Solicitud postal
public void httppClientPost () lanza la excepción {// Crear objeto HttpClient HttpClient Client = httpclients.createDefault (); ; / / Crear un contenedor de lista para almacenar el par de valor de clave básico (par de valores básicos: valor de nombre de parámetro) Lista <BasicNameValuePair> parámetros = new ArrayList <() () (); San ")); parameters.add (new BasicNameValuePair (" edad "," 25 "))); // Agregar entidad de mensaje Post.setEntity (nueva URLEncodedFormentity (parámetros," UTF- 8 ")))); // Obtenga la respuesta y convertirlo en una cadena httpResponse Response = Client.Execute (post); ;}
HTTPClient es un subyectador en Apache Jakarta Common para proporcionar kits de herramientas de programación de clientes eficientes, más recientes y ricos en funciones que admiten el protocolo HTTP, y admite las últimas versiones y sugerencias del protocolo HTTP. HttpClient se ha aplicado a muchos proyectos, como los otros dos proyectos de código abierto en Apache Yakarta Cactus y Htmlunit usan httpclient.