import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Map;
public class HttpRequestSerializer {
/**
* Serializes an HTTP request object for monitoring. Handles edge cases like null requests.
* @param request The HTTP request object to serialize.
* @return A byte array representing the serialized HTTP request, or null if serialization fails.
*/
public static byte[] serializeRequest(HttpRequest request) {
if (request == null) {
System.err.println("Warning: Null request provided. Returning null.");
return null; // Handle null request
}
try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos)) {
oos.writeObject(request);
return baos.toByteArray();
} catch (IOException e) {
System.err.println("Error serializing request: " + e.getMessage());
e.printStackTrace();
return null; // Handle serialization errors
}
}
/**
* Deserializes an HTTP request object from a byte array. Handles edge cases like null arrays.
* @param serializedData The byte array containing the serialized HTTP request.
* @return An HTTP request object, or null if deserialization fails.
*/
public static HttpRequest deserializeRequest(byte[] serializedData) {
if (serializedData == null) {
System.err.println("Warning: Null serialized data provided. Returning null.");
return null; // Handle null data
}
try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectInputStream ois = new ObjectInputStream(baos)) {
ois.readBytes(serializedData); // Reset the byte array
HttpRequest request = (HttpRequest) ois.readObject();
return request;
} catch (IOException | ClassNotFoundException e) {
System.err.println("Error deserializing request: " + e.getMessage());
e.printStackTrace();
return null; // Handle deserialization errors
}
}
//Example HttpRequest class for serialization/deserialization purposes
public static class HttpRequest {
private String method;
private String url;
private String headers;
private String body;
public HttpRequest(String method, String url, String headers, String body) {
this.method = method;
this.url = url;
this.headers = headers;
this.body = body;
}
public String getMethod() {
return method;
}
public String getUrl() {
return url;
}
public String getHeaders() {
return headers;
}
public String getBody() {
return body;
}
}
public static void main(String[] args) {
// Example Usage
HttpRequest request = new HttpRequest("GET", "https://example.com", "Content-Type: application/json", "{\"key\": \"value\"}");
byte[] serialized = serializeRequest(request);
if (serialized != null) {
System.out.println("Request serialized successfully.");
HttpRequest deserialized = deserializeRequest(serialized);
if (deserialized != null) {
System.out.println("Request deserialized successfully.");
System.out.println("Method: " + deserialized.getMethod());
System.out.println("URL: " + deserialized.getUrl());
} else {
System.out.println("Deserialization failed.");
}
} else {
System.out.println("Serialization failed.");
}
//Example with null request
HttpRequest nullRequest = null;
byte[] serializedNull = serializeRequest(nullRequest);
if (serializedNull == null) {
System.out.println("Serialization of null request handled.");
}
}
}
Add your comment