stefangraf
Grünschnabel
Hallo zusammen,
ich habe in Java einen WebserviceClient geschrieben, welcher via HTTP seine SOAP-Anfragen übermittelt. Das funktioniert wunderbar. Nun hat sich meine Aufgabestellung insofern geändert, dass ich die Übertragung der Daten nun mittls HTTPS erdedigen muss.
Meine erste Idee war, dass ich die HttpURLConnection in eine HttpsURLConnection abändere. Dies hat jedoch zu Fehlern geführt. Kann mir jemand sagen inwiefern ich meinen Code noch anpassen muss, sodass es funktioniert?
Bin um jeden Tip, Hinweis, Link, ... dankbar.
Gruss
Stefan
ich habe in Java einen WebserviceClient geschrieben, welcher via HTTP seine SOAP-Anfragen übermittelt. Das funktioniert wunderbar. Nun hat sich meine Aufgabestellung insofern geändert, dass ich die Übertragung der Daten nun mittls HTTPS erdedigen muss.
Meine erste Idee war, dass ich die HttpURLConnection in eine HttpsURLConnection abändere. Dies hat jedoch zu Fehlern geführt. Kann mir jemand sagen inwiefern ich meinen Code noch anpassen muss, sodass es funktioniert?
Bin um jeden Tip, Hinweis, Link, ... dankbar.
Gruss
Stefan
Code:
public class WebserviceClient {
private String[] getRolesByPID(String pid, String app){
String soap_body =
" <roles_by_pid xmlns=\"" + WEBSERVICE_NAMESPACE + "\">\n" +
" <pid>" + pid + "</pid>\n" +
" <application>" + app + "</application>\n" +
" </roles_by_pid>\n";
String[] roles = doSOAP_request(soap_body, WEBSERVICE_METHOD_ROLES);
return roles;
}
/**
*
* @param SOAP_body
* @param webserviceMethod
* @return
*/
private String[] doSOAP_request(String SOAP_body, String webserviceMethod){
try {
/WebServices/ok/usermanager/UserManamgement.asmx"
URL url= new URL(SERVER + ":" + PORT + WEBSERVICE_PATH);
//setup HTTP Connecten to the service
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
// HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
//create SOAP Request
connection.setRequestProperty("Content-type", "text/xml; charset=utf-8");
connection.setRequestProperty("SOAPAction", WEBSERVICE_NAMESPACE + webserviceMethod);
// SOAP request
String msg =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<soap:Envelope " +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" +
" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
" <soap:Body>\n" +
SOAP_body +
" </soap:Body>\n" +
"</soap:Envelope>";
// send SOAP-Request
byte[] bytes = msg.getBytes();
connection.setRequestProperty("Content-length", String.valueOf(bytes.length));
if (PRINT_REQUEST) {
System.out.println("\nSOAP Aufruf:");
System.out.println("Content-type:"+connection.getRequestProperty("Content-type"));
System.out.println("Content-length:"+connection.getRequestProperty("Content-length"));
System.out.println("SOAPAction:"+connection.getRequestProperty("SOAPAction"));
System.out.println(msg);
}
OutputStream out = connection.getOutputStream();
out.write(bytes);
out.close();
// read SOAP-response
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
// handle the SOAP response
StringBuffer in_buffer = new StringBuffer();
String temp;
while ((temp = in.readLine()) != null){
in_buffer.append(temp);
}
String[] arr = unpack_SOAP_message(in_buffer.toString(), webserviceMethod);
// System.out.println(in_buffer.toString());
in.close();
return arr;
}
catch (Exception e) {
System.out.println("FEHLER:" + e.getMessage());
return new String[0];
}
}