Ich schreibe ein Paket für ein Schulprojekt, bei dem ein Benutzer eine Server-URL angeben und das XML abrufen kann, das es zurückgibt. Auf der Client-Seite erhalte ich jedoch einen Fehler.
Die Mock-API-Klasse
import java.net.*;
import java.util.ArrayList;
import java.io.*;
public class ParkplatzInstanz {
/*
* Parkplatz-API-Instanz
* Konstruktor
* URL - String
* Port - int
*/
public static URL serverURL;
public ParkplatzInstanz(URL connurl){
serverURL = connurl;
}
public String getParkingLotInfo(){
//Antwort vom API-Server abrufen
URL APIurl = this.serverURL;
System.out.println(APIurl);
try {
BufferedReader in = new BufferedReader(
new InputStreamReader(APIurl.openStream()));
String APIresponse;
while ((APIresponse = in.readLine()) != null)
return APIresponse;
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public ArrayList parseParkplatzInfo(String XML){
//XML in Arrayliste parsen
return null;
}
}
Die Hauptklasse
paket parkinglot_api;
import java.net.MalformedURLException;
import java.net.URL;
public class Beispiel {
/**
* @param args
*/
public static void main(String[] args){
// TODO Auto-generated method stub
URL serverURL;
try {
serverURL = new URL("http://localhost:8080");
ParkplatzInstanz API = new ParkplatzInstanz(serverURL);
String parkplatzXML = API.getParkingLotInfo();
System.out.println(parkplatzXML);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Der Fehler, den ich erhalte
http://localhost:8080
null
java.io.IOException: Ungültige HTTP-Antwort
bei sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
bei java.net.URL.openStream(Unknown Source)
bei parkinglot_api.ParkplatzInstanz.getParkingLotInfo(ParkplatzInstanz.java:28)
bei parkinglot_api.Beispiel.main(Beispiel.java:20)
Server-Code
https://bitbucket.org/it460/parking-lot-api/src/f7095b71eb11/server
Ich kenne nicht viel von Java, besonders nicht von Netzwerksachen, daher ist oben der Link zum Code, der den Server auf localhost:8080 ausführt und das XML ausgibt. Wusste nicht, wo ich die Header setzen sollte und war ehrlich gesagt einfach froh, dass es das XML ausgab. Der Grund, warum ich dies anpassen muss, ist, weil der Professor möchte, dass ich die Client-Seite verpacke, damit eine andere Gruppe nur die App-Server-URL angeben und die Daten abrufen kann. Das ist, was ich im hier geposteten Code versucht habe.
0 Stimmen
Die URL funktioniert einwandfrei im Browser. Es gibt XML zurück, das ich aus einer anderen Anwendung generiert habe.
0 Stimmen
Versuchen Sie, anstelle von XML eine HTML-Seite zurückzugeben. Möglicherweise hat dies mit dem Antwortheader zu tun, der an Ihren Java-Client zurückgesendet wird.