我为一个学校项目编写了一个包,用户可以在其中指定一个服务器 url 并获取它返回的 xml。尽管在客户端,我遇到了一个错误。
模拟 API 类
import java.net.*;
import java.util.ArrayList;
import java.io.*;
public class ParkingLotInstance {
/*
* Parking Lot API instance
* Constructor
* URL - String
* Port - int
*/
public static URL serverURL;
public ParkingLotInstance( URL connurl){
serverURL = connurl;
}
public String getParkingLotInfo(){
//Get a response from API server
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 parseParkingLotInfo( String XML ){
//Parse XML into array list
return null;
}
}
主班
package parkinglot_api;
import java.net.MalformedURLException;
import java.net.URL;
public class Example {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
URL serverURL;
try {
serverURL = new URL("http://localhost:8080");
ParkingLotInstance API = new ParkingLotInstance(serverURL);
String parkingLotXML = API.getParkingLotInfo();
System.out.println(parkingLotXML);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我得到的错误
http://localhost:8080
null
java.io.IOException: Invalid Http response
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)
at parkinglot_api.ParkingLotInstance.getParkingLotInfo(ParkingLotInstance.java:28)
at parkinglot_api.Example.main(Example.java:20)
服务器代码
https://bitbucket.org/it460/parking-lot-api/src/f7095b71eb11/server
我不太了解 Java,尤其是网络方面的东西,所以上面是在 localhost:8080 上运行服务器并吐出 xml 的代码的链接。不确定在哪里设置标题,老实说很高兴它输出了 xml。我需要调整的原因是教授希望我将客户端打包,以便另一个小组可以指定应用服务器 url 并获取数据。这就是我在此处发布的代码中所尝试的。