J'essaie de faire une requête "registerSensor". Voir le fichier xml suivant. Mais malheureusement, je reçois seulement une exception, à propos d'une requête NULL GET. Ce qui me trouble le plus, c'est le fait que j'envoie et que je lis par la méthode POST.Aucune réponse de (ogc) requête "Service d'observation de capteur" du serveur
Je sais que probablement ce problème ne correspond pas à ce forum, mais je ne sais pas où chercher d'autre .... (serait même heureux si vous venez de donner des conseils, à côté de l'ogc dokus)
Je l'ai testé deux fois sur mon propre serveur et aussi à: http: //giv-sos.uni-muenster.de: 8080/52nSOSv3/
ma demande:
<RegisterSensor
service="SOS"
version="1.0.0"
xmlns="http://www.opengis.net/sos/1.0"
xmlns:swe="http://www.opengis.net/swe/1.0.1"
xmlns:ows="http://www.opengeospatial.net/ows"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:gml="http://www.opengis.net/gml"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:om="http://www.opengis.net/om/1.0"
xmlns:sml="http://www.opengis.net/sensorML/1.0.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/sos/1.0"
http://schemas.opengis.net/sos/1.0.0/sosRegisterSensor.xsd http://www.opengis.net/om/1.0
http://schemas.opengis.net/om/1.0.0/extensions/observationSpecialization_override.xsd>
<SensorDescription>
<sml:SensorML version="1.0.1">
<sml:member>
<sml:System xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<sml:identification>
<sml:IdentifierList>
<sml:identifier>
<sml:Term definition="urn:ogc:def:identifier:OGC:uniqueID">
<sml:value>Test Sensor1</sml:value>
</sml:Term>
</sml:identifier>
</sml:IdentifierList>
</sml:identification>
<sml:capabilities>
<swe:SimpleDataRecord>
<swe:field name="status">
<swe:Boolean>
<swe:value>true</swe:value>
</swe:Boolean>
</swe:field>
<!-- status indicates, whether sensor is mobile (true) or fixed (false) -->
<swe:field name="mobile">
<swe:Boolean>
<swe:value>true</swe:value>
</swe:Boolean>
</swe:field>
</swe:SimpleDataRecord>
</sml:capabilities>
<sml:position name="sensorPosition">
<swe:Position referenceFrame="urn:ogc:def:crs:EPSG:4326">
<swe:location>
<swe:Vector gml:id="STATION_LOCATION">
<swe:coordinate name="easting">
<swe:Quantity>
<swe:uom code="degree"/>
<swe:value>12.99734</swe:value>
</swe:Quantity>
</swe:coordinate>
<swe:coordinate name="northing">
<swe:Quantity>
<swe:uom code="degree"/>
<swe:value>47.79367</swe:value>
</swe:Quantity>
</swe:coordinate>
<swe:coordinate name="altitude">
<swe:Quantity>
<swe:uom code="m"/>
<swe:value>433</swe:value>
</swe:Quantity>
</swe:coordinate>
</swe:Vector>
</swe:location>
</swe:Position>
</sml:position>
<sml:inputs>
<sml:InputList>
<sml:input name="position">
<swe:ObservableProperty definition="urn:ogc:def:phenomenon:OGC:1.0.30:position"/>
</sml:input>
</sml:InputList>
</sml:inputs>
<sml:outputs>
<sml:OutputList>
<sml:output name="position">
<swe:Quantity definition="urn:ogc:def:phenomenon:OGC:1.0.30:position">
<gml:metaDataProperty>
<offering>
<id>position</id>
<name>Tracking Position Cartesian, in 2D</name>
</offering>
</gml:metaDataProperty>
<swe:uom code="m"/>
</swe:Quantity>
</sml:output>
<sml:output name="altitude">
<swe:Quantity definition="urn:ogc:def:property:OGC:AltitudeAboveMSL">
<gml:metaDataProperty>
<offering>
<id>altitude</id>
<name>Altitude above Mean Sea Level</name>
</offering>
</gml:metaDataProperty>
<swe:uom code="m"/>
</swe:Quantity>
</sml:output>
<sml:output name="convell_a">
<swe:Quantity definition="urn:ogc:def:property:OGC:conva">
<gml:metaDataProperty>
<offering>
<id>convell_a</id>
<name>Convidence Ellipse Semiaxis a</name>
</offering>
</gml:metaDataProperty>
<swe:uom code="m"/>
</swe:Quantity>
</sml:output>
<sml:output name="convell_b">
<swe:Quantity definition="urn:ogc:def:property:OGC:convb">
<gml:metaDataProperty>
<offering>
<id>convell_b</id>
<name>Convidence Ellipse Semiaxis b</name>
</offering>
</gml:metaDataProperty>
<swe:uom code="m"/>
</swe:Quantity>
</sml:output>
<sml:output name="convell_phi">
<swe:Quantity definition="urn:ogc:def:property:OGC:convphi">
<gml:metaDataProperty><offering>
<id>convell_phi</id>
<name>Convidence Ellipse Angle Phi</name>
</offering>
</gml:metaDataProperty>
<swe:uom code="m"/>
</swe:Quantity>
</sml:output>
</sml:OutputList>
</sml:outputs>
<sml:components>
<sml:ComponentList>
<sml:component name="sensorsystem"><sml:Component>
<sml:identification>
<sml:IdentifierList>
<sml:identifier>
<sml:Term definition="urn:ogc:def:identifier:OGC:uniqueID">
<sml:value>urn:ogc:object:feature:Sensor:TUWSystem</sml:value>
</sml:Term>
</sml:identifier>
</sml:IdentifierList>
</sml:identification>
<sml:inputs>
<sml:InputList>
<sml:input name="position">
<swe:ObservableProperty definition="urn:ogc:def:phenomenon:OGC:1.0.30:position"/>
</sml:input>
</sml:InputList>
</sml:inputs>
<sml:outputs>
<sml:OutputList>
<sml:output name="position">
<swe:Quantity definition="urn:ogc:def:phenomenon:OGC:1.0.30:position">
<gml:metaDataProperty>
<offering>
<id>position</id>
<name>Tracking Position Cartesian, in 2D</name>
</offering>
</gml:metaDataProperty>
<swe:uom code="m"/>
</swe:Quantity>
</sml:output>
<sml:output name="altitude">
<swe:Quantity definition="urn:ogc:def:property:OGC:AltitudeAboveMSL">
<gml:metaDataProperty>
<offering>
<id>altitude</id>
<name>Altitude above Mean Sea Level</name>
</offering>
</gml:metaDataProperty>
<swe:uom code="m"/>
</swe:Quantity>
</sml:output>
<sml:output name="convell_a">
<swe:Quantity definition="urn:ogc:def:property:OGC:conva">
<gml:metaDataProperty>
<offering>
<id>convell_a</id>
<name>Convidence Ellipse Semiaxis a</name>
</offering>
</gml:metaDataProperty>
<swe:uom code="m"/>
</swe:Quantity>
</sml:output>
<sml:output name="convell_b">
<swe:Quantity definition="urn:ogc:def:property:OGC:convb">
<gml:metaDataProperty>
<offering>
<id>convell_b</id>
<name>Convidence Ellipse Semiaxis b</name>
</offering>
</gml:metaDataProperty>
<swe:uom code="m"/>
</swe:Quantity>
</sml:output>
<sml:output name="convell_phi">
<swe:Quantity definition="urn:ogc:def:property:OGC:convphi">
<gml:metaDataProperty>
<offering>
<id>convell_phi</id>
<name>Convidence Ellipse Angle Phi</name>
</offering>
</gml:metaDataProperty>
<swe:uom code="m"/>
</swe:Quantity>
</sml:output>
</sml:OutputList>
</sml:outputs>
</sml:Component>
</sml:component>
</sml:ComponentList>
</sml:components>
</sml:System>
</sml:member>
</sml:SensorML>
</SensorDescription>
<ObservationTemplate>
<om:Measurement>
<om:samplingTime/>
<om:procedure/>
<om:observedProperty/>
<om:featureOfInterest>
</om:featureOfInterest>
<om:result uom="">
</om:result>
</om:Measurement>
</ObservationTemplate>
</RegisterSensor>
L'exception Réponse que je reçois du serveur:
<?xml version="1.0" encoding="UTF-8"?>
<ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0.0"
xsi:schemaLocation="http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd">
<ows:Exception exceptionCode="InvalidRequest" locator="REQUEST">
<ows:ExceptionText>The GET request null is not supported by this SOS.
</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>
Le code Java:
public class HttpRequest
extends Thread {
private String url = "http://giv-sos.uni-muenster.de:8080/52nSOSv3/sos";
private String charset = "UTF-8";
private String xml_request; //request to db in xml format
private URLConnection connection;
private OutputStream output;
private InputStream input;
private String query; //transformed xml request
/** Ctor.
* @param xml ogc request as String
*/
HttpRequest(String xml) {
this.xml_request = xml;
}
//thread
public void run() {
// converting String xml to application/x-www-form-urlencoded MIME format
try {
query = URLEncoder.encode(xml_request, charset); //transforms special chars
} catch (UnsupportedEncodingException e) {
System.out.println(e.toString());
}
System.out.println("REQUEST: "+xml_request.toString());
// create connection
try {
connection = new URL(url).openConnection();
System.out.println("CONNECTION: "+connection. toString());
connection.setDoOutput(true); //true = set method to POST
connection.setDoInput(true);
connection.setRequestProperty("Accept-Charset", charset);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset="+charset);
} catch (MalformedURLException ex) {
System.out.println("MalformedURLException: " + ex.toString());
} catch (IOException ex) {
System.out.println("IOException: " + ex.toString());
} catch (Exception ex) {
System.out.println("Exception: " + ex.toString());
}
// open connection link
try {
connection.connect();
} catch (IOException ex) {
System.out.println(ex.toString());
}
try {
//write outputstream to server
output = connection.getOutputStream();
output.write(query.getBytes(charset));
//read response from server
input = new URL(url).openStream();
Reader reader = new InputStreamReader(input);
BufferedReader bufferedReader = new BufferedReader(reader);
StringBuilder response = new StringBuilder();
String line = null;
//read
while((line = bufferedReader.readLine()) != null)
response.append(line+"\n");
System.out.println("RESPONSE: "+response.toString());
//close reader
bufferedReader.close();
// close stream
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (output != null)
try {
output.close();
} catch (IOException ex) {
System.out.println("IOEXCEPTION: "+ex.toString());
}
}
}
}
Le ExceptionCode = "InvalidRequest" est assez évident, mais me confondez encore que je ne trouve pas et la moindre idée de ce dans le Doku ....
Je suis heureux de chaque réponse!
Y a-t-il quelqu'un qui a une idée ??? – user972851