I have been attempting to create a SOAP client in Java, but I consistently encounter the same error: “PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.”
Despite having imported all the certificates into the cacert file, I still receive this error. This is my code:
(I also checked i was updating the file in the right JAVA_HOME path, and all the data in the code is just or testing)
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class SoapClient {
public static void main(String[] args) {
String xml = "<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:doc="http://documentospesap730.sanita.finanze.it">n" +
" <soapenv:Header/>n" +
" <soapenv:Body>n" +
" <doc:inserimentoDocumentoSpesaRequest>n" +
" <doc:opzionale1></doc:opzionale1>n" +
" <doc:opzionale2></doc:opzionale2>n" +
" <doc:opzionale3></doc:opzionale3>n" +
" <doc:pincode>W+cy4Lz7rOOgldsbK98TEAwR6OIikKMkQJ1nWS09LgnJ6up+4e2LfIHe9z6aOQ9NocHOqepHuUcqmNNXpOq2JDCZQms65cX2oif8VhSUsvOk/9mc/8A9A7tpLnHcoGNrrjrg0z3fat7JmENXo5LF5uQV2IqvT4z5BDJbNa5XZpQ=</doc:pincode>n" +
" <doc:Proprietario>n" +
" <doc:cfProprietario>SsFrZY1plknIYKxk2MxIsgCyH2X3cfnrbg7B1aywMzw4SYwfzCa797Bb40vZMlS1pRjBki3SYZT/dao7W7SCwarTTLQqFmfXu7SGBStGzfAyVWcXAZapnW3d8QWfY7EgbktdHPfcoslCqY+K4JJrHQA9H2bk2ngSA7n+xOjuLVw=</doc:cfProprietario>n" +
" </doc:Proprietario>n" +
" <doc:idInserimentoDocumentoFiscale>n" +
" <doc:idSpesa>n" +
" <doc:pIva>65498732105</doc:pIva>n" +
" <doc:dataEmissione>2019-01-01</doc:dataEmissione>n" +
" <doc:numDocumentoFiscale>n" +
" <doc:dispositivo>1</doc:dispositivo>n" +
" <doc:numDocumento>P9999</doc:numDocumento>n" +
" </doc:numDocumentoFiscale>n" +
" </doc:idSpesa>n" +
" <doc:dataPagamento>2019-01-01</doc:dataPagamento>n" +
" <doc:cfCittadino>iKvd9JQntqxPBT2UA/OFfztSNLidocP8Op+NfODzfTdxFWzkcdZrJz5gvCuqv7Dh/r3Cin1ZQMmg/BofIqYCyq2PcC+PJzbvQCocDdl6FrXVXs3W5JhnX7VpWFGCLPYYY2WL+RWKxhfkGqeY8+NCVfQ1lEA15g3W5AabJ15Tthk=</doc:cfCittadino>n" +
" <doc:voceSpesa>n" +
" <doc:tipoSpesa>SP</doc:tipoSpesa>n" +
" <doc:importo>25.3</doc:importo>n" +
" </doc:voceSpesa>n" +
" <doc:pagamentoTracciato>SI</doc:pagamentoTracciato>n" +
" </doc:idInserimentoDocumentoFiscale>n" +
" </doc:inserimentoDocumentoSpesaRequest>n" +
" </soapenv:Body>n" +
"</soapenv:Envelope>";
String risposta = callSoapService(xml);
System.out.println(risposta);
}
static String callSoapService(String soapRequest){
try{
String url = "https://invioSS730pTest.sanita.finanze.it/DocumentoSpesa730pWeb/DocumentoSpesa730pPort HTTP/1.1";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Accept-Encoding","gzip,deflate");
con.setRequestProperty("Content-Type","text/xml;charset=UTF-8");
con.setRequestProperty("SOAPAction","inserimento.documentospesap730.sanita.finanze.it");
con.setRequestProperty("Authorization","Basic TVRPTVJBNjZBNDFHMjI0TTpTYWx2ZTEyMw==");
con.setRequestProperty("MIME-Version","1.0");
con.setRequestProperty("Content-Length","1877");
con.setRequestProperty("Host","invioSS730pTest.sanita.finanze.it");
con.setRequestProperty("Connection","Keep-Alive");
con.setRequestProperty("User-Agent","Apache-HttpClient/4.5.5 (Java/16.0.2)");
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(soapRequest);
wr.flush();
wr.close();
String responseStatus = con.getResponseMessage();
System.out.println(responseStatus);
BufferedReader in = new BufferedReader(new InputStreamReader(
con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
String FinalValue = response.toString();
return FinalValue;
} catch (Exception e) {
return e.getMessage();
}
}
}
user26359468 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.