Hallo zusammen,
ich habe Probleme beim Aufruf einer URL bzw. der Übergabe einiger Parameter per POST. Meine Funktion sieht derzeit folgendermaßen aus:
Als Fehlermeldung erhalte ich immer:
Der Aufruf über GET funktioniert aber, der Service ist also erreichbar. Ich habe es auch schon mit dem HttpClient von Apache versucht, aber das hat auch nicht funktioniert und stiftete durch den Versionswechsel eher noch mehr für Verwirrung meinerseits...
Nun hoffe ich also, dass ich hier noch Tipps bekomme, wie ich die Parameter richtig übergeben muss, damit der Aufruf auch per POST funktioniert!
Schonmal vielen Dank
Petra
ich habe Probleme beim Aufruf einer URL bzw. der Übergabe einiger Parameter per POST. Meine Funktion sieht derzeit folgendermaßen aus:
Code:
Properties properties = new Properties();
URL url;
HttpURLConnection connection = null;
try {
properties.loadFromXML(new FileInputStream("properties.xml"));
//Create connection
url = new URL(properties.getProperty("urlwps"));
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
String urlParameters = "service=" + URLEncoder.encode("wps", "UTF-8") +
"&version=" + URLEncoder.encode("1.0.0", "UTF-8") +
"&request=" + URLEncoder.encode("identifier", "UTF-8") +
"&version=" + URLEncoder.encode("execute", "UTF-8") +
"&identifier=" + URLEncoder.encode("los", "UTF-8") +
"&datainputs=" + URLEncoder.encode("east="+x+";north="+y+";height=1.80;maxdist=80;gml="+properties.getProperty("gml"), "UTF-8");
connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches (false);
connection.setDoInput(true);
connection.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream (connection.getOutputStream ());
wr.writeBytes (urlParameters);
wr.flush ();
wr.close ();
//Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer response = new StringBuffer();
while((line = rd.readLine()) != null) {
response.append(line);
System.out.println(line);
response.append('\r');
}
rd.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(connection != null) {
connection.disconnect();
}
}
Als Fehlermeldung erhalte ich immer:
Code:
java.io.IOException: Server returned HTTP response code: 500 for URL: http://vm116.rz.uni-osnabrueck.de/cgi-bin/wps?
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1261)
at POISelection.getWPS(POISelection.java:192)
at POISelection.POIMain(POISelection.java:360)
at POIServlet.doPost(POIServlet.java:202)
[...]
Der Aufruf über GET funktioniert aber, der Service ist also erreichbar. Ich habe es auch schon mit dem HttpClient von Apache versucht, aber das hat auch nicht funktioniert und stiftete durch den Versionswechsel eher noch mehr für Verwirrung meinerseits...
Nun hoffe ich also, dass ich hier noch Tipps bekomme, wie ich die Parameter richtig übergeben muss, damit der Aufruf auch per POST funktioniert!
Schonmal vielen Dank
Petra