Hvordan opbygger jeg denne SOAP request?
Hej eksperter!Jeg skal lave et java program der kan snakke med RKI's webservice. Jeg har aldrig programmeret op mod en webservice før og behøver noget hjælp.
På deres hjemmeside ( https://ws.rki.dk/person.asmx?op=SoegPersonRegistreringCpr ) har de skrevet hvordan SOAP request'en skal være udformet.
Det er også gengivet her:
**************************************
POST /person.asmx HTTP/1.1
Host: ws.rki.dk
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://webservices.rki.dk/SoegPersonRegistreringCpr"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SoegPersonRegistreringCpr xmlns="http://webservices.rki.dk/">
<Brugernavn>string</Brugernavn>
<Password>string</Password>
<CPRnummer>string</CPRnummer>
</SoegPersonRegistreringCpr>
</soap:Body>
</soap:Envelope>
**************************************
Jeg har pt. et javaprogram der ser sådan ud:
**************************************
import javax.xml.soap.*;
import javax.xml.namespace.QName;
import javax.xml.soap.MimeHeaders;
import java.util.Iterator;
import java.net.URL;
public class RequestX {
public static void main(String[] args) {
try {
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnectionFactory.createConnection();
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
SOAPPart part = message.getSOAPPart();
SOAPEnvelope env = part.getEnvelope();
env.addNamespaceDeclaration("xsi","http://www.w3.org/2001/XMLSchema-instance");
env.addNamespaceDeclaration("xsd","http://www.w3.org/2001/XMLSchema");
env.addNamespaceDeclaration("soap","http://schemas.xmlsoap.org/soap/envelope/");
MimeHeaders hd = message.getMimeHeaders();
hd.addHeader("SOAPAction", "http://webservices.rki.dk/SoegPersonRegistreringCpr");
SOAPHeader header = message.getSOAPHeader();
header.detachNode();
SOAPBody body = message.getSOAPBody();
QName bodyName = new QName("http://webservices.rki.dk", "SoegPersonRegistreringCpr");
SOAPBodyElement SoegPersonRegistreringCpr = body.addBodyElement(bodyName);
QName childName = new QName("Brugernavn");
SOAPElement brugernavn = SoegPersonRegistreringCpr.addChildElement(childName);
brugernavn.addTextNode("Usertest");
childName = new QName("Password");
SOAPElement password = SoegPersonRegistreringCpr.addChildElement(childName);
password.addTextNode("passwordtest");
childName = new QName("CPRnummer");
SOAPElement cprnummer = SoegPersonRegistreringCpr.addChildElement(childName);
cprnummer.addTextNode("0123456789");
URL endpoint = new URL("https://ws.rki.dk/Person.asmx");
SOAPMessage response = connection.call(message, endpoint);
connection.close();
SOAPBody soapBody = response.getSOAPBody();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
**************************************
Jeg ved at der er hul igennem - men jeg får at vide at brugeren ikke er godkendt. Og nej! Jeg har tjekket mit brugernavn og password - det virker både på hjemmesiden og i programmet soapUI.
Så for mig at se må problemet være at jeg ikke får bygget request'en ordentligt op.
Jeg synes ikke der er meget hjælp at hente på nettet så der er rimelig gode point at hente her... Kan I hjælpe mig?
/Kasper