私はJavaアプリケーションをGuildWars2の外部APIに接続しようとしています。HttpURLConnectionのデバッグ方法
私がテストしようとしているリンクは次のとおりです。ブラウザ内でそのページに移動するとき http://api.guildwars2.com/v2/commerce/listings
int型IDのリストが返されます。
私は、Javaアプリケーションを実行する際に、そのIDのリストを取得しようとしています。私は次のコードを使用
は(うまくいけば、それは私のデスクトップにリモートでプログラミングしようとしている、私の携帯電話上で、現在、正しいフォーマット):私のクラスを実行する際に
public class GuildWarsAPI
{
public static void main(String[] args)
{
GuildWarsAPI api = new GuildWarsAPI();
api.getAPIResponse("http://api.guildwars2.com/v2/commerce/listings");
}
public void getAPIResponse(String URLString)
{
URL url = null;
try {
url = new URL(URLString);
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
HttpURLConnection connection = null;
try {
connection = (HttpURLConnection) url.openConnection();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (connection != null)
{
System.out.println("connection success");
connection.setRequestProperty("Accept", "application/json");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setReadTimeout(10000);
connection.setConnectTimeout(10000);
try {
/*BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder input = new StringBuilder();
String nextLine = null;
while ((nextLine = in.readLine()) != null)
{
System.out.println("adding output");
input.append(nextLine);
}*/
InputStream in = new BufferedInputStream(connection.getInputStream());
int b = 0;
while ((b = in.read()) != -1)
{
System.out.println("byte:" + b);
}
System.out.println("done");
}
catch (Exception e) {
e.printStackTrace();
}
finally {
connection.disconnect();
System.out.println("closed");
}
}
}
}
、それはすぐにconnection success
、done
、closed
をプリントアウト。それは間違いなくタイムアウトを待っているわけではありません。私はそのリクエストヘッダーとDoInput/DoOutputで試そうとしています。私はそれを踏んで、それが接続しているかのように見え、ちょうど情報のバイトを受け取っていません。どのように私のような他のIDの背中を取得する方法を見つけ出すことができます私は?私の他の質問は期待のようにどのように私は、IDの背中を得るのです。私の究極の質問がある一方で、だから、
を(doesntのwhile
ループに入ります)私が期待する?
ありがとうございます!あなたが気にしない場合 - 別の場所につながるレスポンスコードとヘッダをどうやって決めましたか? – DoubleDouble
'connection.getResponseCode()'を経由し、次に 'connection.getHeaderField(" Location ")'を見ました。 – EJP