Potřebuji poslat data na server s těmito parametry:
Datové zprávy opatřené uznávaným elektronickým podpisem, které přijímá "Společné technické zařízení správců daně", musí být vytvořeny dle formátu PKCS#7 verze 1.5 (RFC 2315). PKCS#7 objekt musí být ve formátu DER (ITU-T Recommendation X.690). Obsah PKCS#7 objektu, reprezentujícího datovou zprávu opatřenou uznávaným elektronickým podpisem, musí splňovat následující podmínky: - musí být typu "signedData" - musí obsahovat podepisovaná data (není přípustná reference) - musí obsahovat certifikát podepisujícího (vložený) - musí obsahovat právě jeden elektronický podpis Kontrola při příjmu datové zprávy opatřené uznávaným elektronickým podpisem se kromě kryptografických kontrol platnosti podpisu datové zprávy kontroluje také následující: - certifikát podepisujícího musí být vydán akreditovaným poskytovatelem certifikačních služeb (přehled udělených akreditací je k dispozici na stránkách Ministerstva vnitra na adrese http://www.mvcr.cz/…formace.aspx) - certifikát podepisujícího musí obsahovat bezvýznamový identifikátor klienta MPSV tak, jak to vyžaduje zákon
Zatím jsem napsal toto:
String url = "https://adisepo.mfcr.cz/adistc/epo_podani";
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
//add reuqest header
con.setRequestMethod("POST");
String urlParameters = "email=&test=1";
// Send post request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + urlParameters);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
System.out.println(response.toString());
Ale dostávám tento problém:
Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1506)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1282)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1257)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
at HttpURLConnectionExample.sendPost(HttpURLConnectionExample.java:72)
at HttpURLConnectionExample.main(HttpURLConnectionExample.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Jak bych to mohl vyřešit?