Red de conocimiento informático - Material del sitio web - Cómo implementar Java para analizar mensajes de protocolo de red

Cómo implementar Java para analizar mensajes de protocolo de red

Parámetros comunes:

Tipo de contenido: texto/plain; charset=UTF-8

Codificación de transferencia de contenido: 8 bits

Parámetros de archivo:

Tipo de contenido: aplicación/flujo de octeto

Codificación de transferencia de contenido: binario

La última línea de la entidad de parámetro es: -- Agregue límite más -- y finalmente rompa la línea. El formato aquí es: --OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp--.

Simular solicitud de carga de archivo

subida pública estática vacía (String fileName) {

prueba {

// Carácter de nueva línea

final String newLine = "\r\n";

final String borderPrefix = "--";

// Definir la línea de separación de datos

String BOUNDARY = "========7d4a6d158c9";

// Nombre de dominio del servidor

URL url = nueva URL("www.myhost.com")

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

// Establecer estado POST

conn.setRequestMethod("POST");

p>

// Las siguientes dos líneas deben configurarse para enviar una solicitud POST

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setUseCaches(false);

// Establecer parámetros del encabezado de solicitud

conn.setRequestProperty("connection", "Keep-Alive");

conn .setRequestProperty("Charsert", "UTF-8");

conn.setRequestProperty("Content-Type", "multipart/form-data; limite=" + LÍMITE );

OutputStream out = new DataOutputStream(conn.getOutputStream());

// Subir archivo

Archivo archivo = new File(fileName);

StringBuilder sb = new StringBuilder();

sb.append(boundaryPrefix);

sb.append(BOUNDARY);

sb .append(newLine);

// Los parámetros de archivo y los nombres de los parámetros de la foto se pueden modificar a voluntad

sb.append("Content-Disposition: form-data;name=\" foto\";nombre de archivo=\"" + nombre de archivo

+ "\"" + nuevaLínea);

sb.append("Tipo de contenido: aplicación/flujo de octeto") ;

// Después de configurar el encabezado del parámetro, se requieren dos saltos de línea, seguidos del contenido del parámetro

sb.append(newLine);

sb. append(newLine);

//Escribe los datos del encabezado del parámetro en el flujo de salida

out.write(sb.toString().getBytes());

// Flujo de entrada de datos, uso para leer datos de archivos

DataInputStre

estoy en = new DataInputStream(new FileInputStream(

archivo));

byte[] bufferOut = nuevo byte[1024];

int bytes = 0;

//Lee datos de 1 KB cada vez y escribe los datos del archivo en el flujo de salida

while ((bytes = in.read(bufferOut)) != -1) {

out.write(bufferOut, 0, bytes);

}

// Agrega una nueva línea al final

out.write( newLine .getBytes());

in.close();

// Defina la línea separadora de datos final, es decir, -- más LÍMITE más --.

byte[] end_data = (nuevaLínea + límitePrefijo + LÍMITE + límitePrefijo + nuevaLínea)

.getBytes();

// Escribir la marca de final p>

out.write(end_data);

out.flush();

out.close();

// Definir BufferedReader input Stream para leer la respuesta de la URL

// BufferedReader Reader = new BufferedReader(new InputStreamReader(

// conn.getInputStream()));

/ / Línea de cadena = null;

// while ((line = lector.readLine()) != null) {

// System.out.println(line );

// }

} catch (Exception e) {

System.out.println("¡Ocurrió una excepción al enviar la solicitud POST!" + e);

p>

e.printStackTrace();

}

}