Я пытаюсь подключить приложение Java к внешнему api для GuildWars2.Как отлаживать HttpURLConnection?
Ссылка Я пытаюсь проверить это: http://api.guildwars2.com/v2/commerce/listings
Список идентификаторов Int возвращаются при переходе на эту страницу в браузере.
Как практика обучения, я пытаюсь получить этот список идентификаторов при запуске приложения Java.
Я использую следующий код (надеюсь, он форматирует правильно, в настоящее время на телефоне, пытаясь программировать удаленно на рабочий стол):
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. Я прошел через него, и кажется, что он подключается и просто не получает никаких байтов информации. (не входит в петлю while
)
Итак, в то время как мой последний вопрос: как мне вернуть идентификатор так, как я ожидаю?, мой другой вопрос: как я могу понять, как получить обратно другой идентификатор Я жду?
спасибо! Если вы не возражаете - как вы определили код ответа и заголовок, ведущий в другое место? – DoubleDouble
Через 'connection.getResponseCode()', а затем 'connection.getHeaderField (" Location ")' после того, как я увидел 302. – EJP