Smagjus
Rear Admiral
- Registriert
- Feb. 2011
- Beiträge
- 6.132
Hallo,
ich muss ein Java Programm in VB.net umsetzen und suche daher nach entsprechenden Klassen zur Umsetzung in VB.net. Es geht um einen Client für das Versenden/Empfangen einer XML-Anweisung via SOAP auf Port 443. Ich habe gerade erst von SOAP gehört und weiß nicht viel darüber. Wie dem auch sei. Ich habe hier die Importanweisungen aus dem Java-Programm aufgelistet, um zu zeigen, um welche Klassen es geht.
Die Klassen in VB.net sollten möglichst ähnliche Funktionalitäten haben. Eventuell kennt ja jemand sogar eine Quelle im Internet, wo ich leicht an solche Informationen rankomme.
Vielen Dank für alle Antworten.
ich muss ein Java Programm in VB.net umsetzen und suche daher nach entsprechenden Klassen zur Umsetzung in VB.net. Es geht um einen Client für das Versenden/Empfangen einer XML-Anweisung via SOAP auf Port 443. Ich habe gerade erst von SOAP gehört und weiß nicht viel darüber. Wie dem auch sei. Ich habe hier die Importanweisungen aus dem Java-Programm aufgelistet, um zu zeigen, um welche Klassen es geht.
Code:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.net.HttpURLConnection;
import java.net.URL;
Vielen Dank für alle Antworten.
Code:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class WSGUploader implements Uploader {
private DocumentBuilder docBuilder;
private static final String WSG_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/03/addressing\"\n" +
" xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"\n" +
" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\">\n" +
" <soap:Header>\n" +
" <wsse:Security soap:mustUnderstand=\"1\">\n" +
" <wsse:UsernameToken\n" +
" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"\n" +
" wsu:Id=\"SecurityToken-115b71ae-7ae2-47c6-a1cd-87c540312330\">\n" +
" <wsse:Username>XXX</wsse:Username>\n" +
" <wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\" >xxx</wsse:Password>\n" +
" </wsse:UsernameToken>\n" +
" </wsse:Security>\n" +
" </soap:Header>\n" +
" <soap:Body>";
private static final String WSG_FOOTER = "</soap:Body>\n" +
"</soap:Envelope>";
public WSGUploader() throws Exception {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
docBuilder = builderFactory.newDocumentBuilder();
}
public void upload(String xmlContent, String serviceOperation, String serviceVersion, boolean useCertSystem) throws Exception {
String xmlResponse;
String soapBody = xmlContent.replaceFirst("<\\?xml[^>]*\\?>", "");
URL wsgUrl = new URL("https://sop-ws.deutschepost.de/sbb/services/Invoke");
HttpURLConnection httpConnection = (HttpURLConnection)wsgUrl.openConnection();
httpConnection.setRequestMethod("POST");
httpConnection.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
if (useCertSystem == true) {
httpConnection.addRequestProperty("SOAPAction", "OrderManagement/CertificationOrderManagement/" + serviceVersion + "#" + serviceOperation);
}
else
{
httpConnection.addRequestProperty("SOAPAction", "OrderManagement/OrderManagement/" + serviceVersion + "#" + serviceOperation);
}
httpConnection.setDoOutput(true);
httpConnection.connect();
OutputStreamWriter outStream = new OutputStreamWriter(httpConnection.getOutputStream(), "UTF-8");
outStream.write(WSG_HEADER);
outStream.write('\n');
outStream.write(soapBody);
outStream.write('\n');
outStream.write(WSG_FOOTER);
outStream.write('\n');
outStream.flush();
int responseCode = httpConnection.getResponseCode();
if (responseCode == 200) {
InputStream responseStream = httpConnection.getInputStream();
final BufferedReader reader = new BufferedReader(new InputStreamReader(responseStream, "UTF-8"));
StringBuffer result = new StringBuffer();
String line;
while((line = reader.readLine()) != null) {
result.append(line + "\n");
}
responseStream.close();
xmlResponse = result.toString();
} else {
throw new RuntimeException("Gateway returned response code " + responseCode);
}
}
}