「registerSensor」リクエストを作成しようとしています。次のxmlファイルを参照してください。しかし、残念ながら、NULLGETリクエストに関する例外しか発生しません。私が最も混乱しているのは、POSTメソッドで送受信するという事実です。
おそらくこの問題はそのフォーラムに当てはまらないことは知っていますが、他にどこを探すべきかわかりません....(ogc dokusのほかに、アドバイスをいただければ幸いです)
私は自分のサーバーと次のサーバーで2回テストしました:http://giv-sos.uni-muenster.de:8080 / 52nSOSv3 /
私の要求:
<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>
サーバーから取得する例外応答:
<?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>
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());
}
}
}
}
exceptionCode = "InvalidRequest"はかなり明白ですが、それでも私がドクでそれを見つけて手がかりを見つけることができないことを私に混乱させます...。
私はすべての答えに満足しています!