ユーザーがサーバーの 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を吐き出すコードへのリンクです。Headers をどこに設定すればよいかわからなかったのですが、正直なところ、xml が出力されたことがうれしかったです。これを適応させる必要があるのは、教授がクライアント側をパッケージ化して、別のグループがアプリサーバーの URL を指定してデータを取得できるようにすることを望んでいるためです。それが、ここに投稿されたコードで試みたものです。