Generalmente, es inevitable encontrar llamadas a interfaces externas durante el desarrollo del proyecto. Este artículo describe el método de llamar a la clase HttpURLConnection en segundo plano de Java para simular solicitudes del navegador. Se puede utilizar para llamadas de interfaz. Compártelo con todos para tu referencia. El método de implementación específico es el siguiente:
Copie el código de la siguiente manera: paquete com.cplatform.movie.back.test;
importar java.io.BufferedReader;
importar java.io.DataOutputStream;
importar java.io.InputStreamReader;
importar java.net.HttpURLConnection;
importar java.net.URL;
importar java.net.URLEncoder;
clase pública HttpURLConnectionTest {
Cadena final estática pública GET_URL = "http://112.4.27.9/mall-back/if_user/store_list?storeId=32";
Cadena final estática pública POST_URL = "http://112.4.27.9/mall-back/if_user/store_list";
/**
* Llamadas de interfaz GET
*/
vacío estático público httpURLConectionGET() {
intentar {
URL url = new URL(GET_URL); // Convierte la cadena en una dirección de solicitud URL
Conexión HttpURLConnection = (HttpURLConnection) url.openConnection();//Abre la conexión
conexión.connect();//Conectar sesión
// Obtener flujo de entrada
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
Línea de cuerda;
StringBuilder sb = nuevo StringBuilder();
while ((line = br.readLine()) != null) {// Flujo de lectura en bucle
sb.append(línea);
}
br.close();//Cerrar la transmisión
conexión.desconectar(); // Desconectar
System.out.println(sb.toString());
} captura (Excepción e) {
e.printStackTrace();
System.out.println("¡Error!");
}
}
/**
* Llamadas de interfaz POST
*/
vacío estático público httpURLConnectionPOST () {
intentar {
URL URL = nueva URL (POST_URL);
//Fuerza la conexión urlConnection devuelta por el método open a una conexión HttpURLConnection (identifica una conexión de objeto remoto a la que hace referencia la URL)
HttpURLConnection conexión = (HttpURLConnection) url.openConnection();// En este momento la conexión es solo un objeto de conexión, esperando ser conectado
// Establece el flujo de salida de la conexión en verdadero, el valor predeterminado es falso (las solicitudes de publicación pasan implícitamente parámetros en forma de flujo)
conexión.setDoOutput(verdadero);
//Establece el flujo de entrada de la conexión en verdadero
conexión.setDoInput(verdadero);
//Establece el método de solicitud para publicar
conexión.setRequestMethod("POST");
// la caché de solicitud posterior se establece en falso
conexión.setUseCaches(falso);
//Establece si la instancia HttpURLConnection realiza la redirección automáticamente
conexión.setInstanceFollowRedirects(verdadero);
// Establece cada atributo en el encabezado de la solicitud (el siguiente es el tipo de contenido, establecido en el parámetro from codificado por urlEncoded)
// aplicación/texto x-javascript/xml->aplicación de datos xml/x-javascript->aplicación de objeto json/x-www-form-urlencoded->datos del formulario
conexión.setRequestProperty("Tipo de contenido", "aplicación/x-www-form-urlencoded");
// Establece una conexión (la solicitud no se inicia hasta que se llama al método connect.getInputStream(). La configuración de los parámetros anteriores debe realizarse antes de este método)
conexión.connect();
// Crea un flujo de entrada y salida, utilizado para generar los parámetros transportados en la conexión (¿el contenido de salida es el contenido posterior?)
DataOutputStream salida de datos = nuevo DataOutputStream(connection.getOutputStream());
String parm = "storeId=" + URLEncoder.encode("32", "utf-8"); //El método URLEncoder.encode() codifica cadenas
// Parámetros de salida a la conexión
salida de datos.writeBytes(parm);
// Actualizar y cerrar la transmisión una vez completada la salida
salida de datos.flush();
dataout.close(); // Paso importante y fácil de ignorar (cierre la transmisión, ¡recuerde!)
System.out.println(connection.getResponseCode());
//La conexión inicia una solicitud y procesa la respuesta del servidor (obtiene el flujo de entrada de la conexión y lo envuelve como bufferedReader)
BufferedReader bf = nuevo BufferedReader(new InputStreamReader(connection.getInputStream()));
Línea de cuerda;
StringBuilder sb = new StringBuilder(); // Se utiliza para almacenar datos de respuesta.
// Lee la secuencia en un bucle, si no llega al final
mientras ((línea = bf.readLine()) != nulo) {
sb.append(bf.readLine());
}
bf.close(); // Paso importante y fácil de ignorar (cierre la transmisión, ¡recuerde!)
conexión.disconnect(); // Destruye la conexión
System.out.println(sb.toString());
} captura (Excepción e) {
e.printStackTrace();
}
}
público estático vacío principal (String [] argumentos) {
// httpURLConexionGET();
httpURLConnectionPOST();
}
}
Espero que este artículo sea útil para la programación Java de todos.