Recepción de Eventos de Entrada y Salida de Vehículos


Solicitud
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;

// Deben cambiar los datos de "params" por los que correspondan. 
// Esta request de ejemplo incluye todos posibles valores para 
// llamar al metodo CargaDatosVehiculo, puede que algun valor sea opcional.
Map<String, Object> data = new LinkedHashMap<>();
    data.put("environment", "prod");
    data.put("method", "CargaDatosVehiculo");
    data.put("wsid", "wEnysa");
    Map<String, Object> params = new LinkedHashMap<>();
    data.put("params", params);
        Map<String, Object> autenticacion = new LinkedHashMap<>();
        params.put("autenticacion", autenticacion);
            autenticacion.put("tipoAgente", "string");
            autenticacion.put("usuRol", "string");
            autenticacion.put("usuAduana", "string");
            autenticacion.put("lugOper", "string");
            autenticacion.put("token", "string");
            autenticacion.put("firma", "string");
        Map<String, Object> datosVehiculo = new LinkedHashMap<>();
        params.put("datosVehiculo", datosVehiculo);
            datosVehiculo.put("anioFabricacion", "string");
            datosVehiculo.put("color", "string");
            datosVehiculo.put("aduanaFormulario", "string");
            datosVehiculo.put("anioFormulario", "string");
            datosVehiculo.put("apellidoMaterno", "string");
            datosVehiculo.put("apellidoPaterno", "string");
            datosVehiculo.put("arrastreSiNo", "string");
            datosVehiculo.put("codigoAduanaMovimiento", "string");
            datosVehiculo.put("codigoPais", "string");
            datosVehiculo.put("codigoPaisVehiculo", "string");
            datosVehiculo.put("codigoResguardo", "string");
            datosVehiculo.put("direccion", "string");
            datosVehiculo.put("fechaDocumentoAut", "string");
            datosVehiculo.put("fechaMovimiento", "string");
            datosVehiculo.put("fechaOrigenDocumento", "string");
            datosVehiculo.put("fechaVencimiento", "string");
            datosVehiculo.put("marca", "string");
            datosVehiculo.put("marcaModelo", "string");
            datosVehiculo.put("modelo", "string");
            datosVehiculo.put("nacionalidad", "string");
            datosVehiculo.put("nombres", "string");
            datosVehiculo.put("numeroChasis", "string");
            datosVehiculo.put("numeroDocumento", "string");
            datosVehiculo.put("numeroFormulario", "string");
            datosVehiculo.put("numeroMotor", "string");
            datosVehiculo.put("observaciones", "string");
            datosVehiculo.put("pasajeros", 1);
            datosVehiculo.put("patente", "string");
            datosVehiculo.put("propietario", "string");
            datosVehiculo.put("tipoDocumento", "string");
            datosVehiculo.put("tipoDocumentoAut", "string");
            datosVehiculo.put("tipoVehiculo", "string");
            Map<String, Object> datosAlquiler = new LinkedHashMap<>();
            datosVehiculo.put("datosAlquiler", datosAlquiler);
                datosAlquiler.put("tipoContrato", "string");
                datosAlquiler.put("numeroDocumentoEmpresa", "string");
                datosAlquiler.put("razonSocialEmpresa", "string");
                datosAlquiler.put("domicilioEmpresa", "string");
                datosAlquiler.put("tipoDocumentoEmpresa", "string");
                datosAlquiler.put("numeroContrato", "string");
                datosAlquiler.put("fechaVencimientoContrato", "string");
                Map<String, Object> DatosConductores = new LinkedHashMap<>();
                datosAlquiler.put("DatosConductores", DatosConductores);
                    List<Object> DatosConductor = new ArrayList<Object>();
                    DatosConductores.put("DatosConductor", DatosConductor);
                        Map<String, Object> DatosConductor0 = new LinkedHashMap<>();
                        DatosConductor.add(DatosConductor0);
                            DatosConductor0.put("tipoDocumentoConductor", "string");
                            DatosConductor0.put("numeroDocumentoConductor", "string");
                            DatosConductor0.put("nacionalidad", "string");
                            DatosConductor0.put("numeroLicenciaConducir", "string");
                            DatosConductor0.put("apellidoMaternoConductor", "string");
                            DatosConductor0.put("apellidoPaternoConductor", "string");
                            DatosConductor0.put("nombreConductor", "string");
                            DatosConductor0.put("titular", "string");
                Map<String, Object> Seguros = new LinkedHashMap<>();
                datosAlquiler.put("Seguros", Seguros);
                    List<Object> Seguro = new ArrayList<Object>();
                    Seguros.put("Seguro", Seguro);
                        Map<String, Object> Seguro0 = new LinkedHashMap<>();
                        Seguro.add(Seguro0);
                            Seguro0.put("numeroSeguro", "string");
                            Seguro0.put("fechaInicio", "string");
                            Seguro0.put("fechaFin", "string");
                            Seguro0.put("razonSocialAseguradora", "string");

// Creamos un cliente HTTP para llamar a la API
HttpClient client = HttpClient.newBuilder()
    .connectTimeout(Duration.ofSeconds(20))
    .build();

// Realizamos la llamada a la API
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String dataJSON = gson.toJson(data);

HttpRequest.Builder request = HttpRequest.newBuilder()
    .uri(new URI("https://app.afipsdk.com/api/v1/afip/requests"))
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(dataJSON));

// Reemplazar con tu access_token obtenido de https://app.afipsdk.com
String accessToken = "TU_TOKEN_AQUI";
request.header("Authorization", "Bearer "+ accessToken); 

HttpResponse<String> requestResponse = client.send(request.build(), HttpResponse.BodyHandlers.ofString());

// En caso de error lo mostramos por consola
if (requestResponse.statusCode() >= 400) {
    JsonElement errorResponse = gson.fromJson(requestResponse.body(), JsonElement.class);
    System.out.println("Error en la request: " + gson.toJson(errorResponse));

    return;
}

// Convertimos la respuesta en un objeto
JsonObject jsonObject = gson.fromJson(requestResponse.body(), JsonElement.class).getAsJsonObject();

// Mostramos la respuesta por consola
System.out.println(gson.toJson(jsonObject));
Respuesta
{
    "CargaDatosVehiculoResult": {
        "codigoError": "integer",
        "descripcion": "string",
        "descripcionAdicional": "string"
    }
}