Buenas,
Tengo solucionado el tema del TicketBAI para Guipuzkoa y Alava, ahora estoy enfocado en el envió de TicketBAI para Bizkaia. Asi pues, genero el TicketBAI tal y como haria en Gipuzkoa o Alava, convierto el documento en Base64, creo el XML con el TicketBAI codificado en Base64 en su interior y lo comprimo con GZIP. Una vez con el GZIP, creo la peticion que contendra este GZIP en su cuerpo. El problema lo tengo al enviar y recibir la respuesta, asi pues me esta dando "404 - Bad Request". Os dejo mi codigo en Java, para que podais ver lo que estoy haciendo para crear la peticion, tengo el certificado de Bizkaia en mi JKS y estoy enviando con SSL usando un certificado (.pfx):
Código:
String jsonHeader = "{\"con\": \"LROE\",\"apa\": \"1.1\",\"inte\": {\"nif\": \"" + nif + "\",\"nrs\": \"" + nrs + "\"},\"drs\": {\"mode\": \"240\",\"ejer\": \"" + ejer + "\"}}";
System.out.println("eus-bizkaia-n3-data -> " + jsonHeader);
con.setRequestProperty("Accept-Encoding", "gzip");
con.setRequestProperty("Content-Encoding", "gzip");
con.setRequestProperty("Content-Length ",String.valueOf(comprimitBizkaia.length()));
con.setRequestProperty("Content-Type", "application/octet-stream");
con.setRequestProperty("eus-bizkaia-n3-version", "1.0");
con.setRequestProperty("eus-bizkaia-n3-content-type", "application/xml");
con.setRequestProperty("eus-bizkaia-n3-data", jsonHeader);
con.setRequestProperty("Method", "POST");
OutputStream os = con.getOutputStream();
os.write(Files.readAllBytes(comprimitBizkaia.toPath()));
os.flush();
con.connect();
//Rebre resposta servidor de Bizkaia
StringBuilder sb = new StringBuilder();
int HttpResult = con.getResponseCode();
if(HttpResult == HttpsURLConnection.HTTP_OK){
InputStream gzipStream = new GZIPInputStream(con.getInputStream());
Reader decoder = new InputStreamReader(gzipStream, "utf-8");
BufferedReader buffered = new BufferedReader(decoder);
String line = null;
while ((line = buffered.readLine()) != null) {
sb.append(line + "\n");
}
buffered.close();
sResposta = sb.toString();
System.out.println("Resposta -> "+sb.toString());
}else{
System.out.println(con.getResponseCode());
System.out.println(con.getResponseMessage());
}
}catch (IOException | KeyStoreException | NoSuchAlgorithmException | KeyManagementException | CertificateException | UnrecoverableKeyException e) {
//}catch (IOException e) {
System.err.println("HA DADO UNA EXCEPCION");
System.err.println(e);
}
Muchas gracias.