java - использование java.net для получения веб-страницы - как правильно получить заголовок ответа - PullRequest
0 голосов
/ 11 января 2012

Я пытаюсь использовать java.net для подключения к удаленному URL в Google App Engine для Java.

После подключения я хочу получить заголовки ответа ---

Я используюследующий код (после подключения и извлечения некоторых данных) - Примечание - «клиент» представляет объект HTTPUrlConnection.

//now get HTTP Response Headers...
for (Entry<String, List<String>> headernew : client.getHeaderFields().entrySet()) {
System.out.println(headernew.getKey() + "=" + headernew.getValue());
String currName = headernew.getKey();
String currValue = headernew.getValue();

Теперь, так как «headernew» указан со значением в виде списка, я не могу установить «currValue»как я дал в коде выше.

Строка кода, которая сначала использует 'headernew', взята из существующего ответа SO.

Где неправильный код выше?Должен ли я просто установить 'headernew' следующим образом -

for (Entry<String, String> headernew : client.getHeaderFields().entrySet()) {

В частности, я хочу получить следующие фрагменты данных -

MIME-тип, кодировка, заголовок ответа в виде пары ключ-значениеи тело ответа (объявлено как 'byte []')

1 Ответ

1 голос
/ 11 января 2012
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map.Entry;

public class Test {

  public static void run() throws Throwable {

    HttpURLConnection client = null;
    OutputStreamWriter wr = null;
    BufferedReader rd = null;
    StringBuilder sb = null;
    String line = null;

    try {

      URL url = new URL("http://www.google.com");
      client = (HttpURLConnection) url.openConnection();
      client.setRequestMethod("GET");
      client.setDoOutput(true);
      client.setReadTimeout(10000);

      client.connect();
      System.out.println(" *** headers ***");
      for (Entry<String, List<String>> headernew : client.getHeaderFields().entrySet()) {
        System.out.println(headernew.getKey() + "=" + headernew.getValue());
      }

      System.out.println(" \n\n*** Body ***");
      rd = new BufferedReader(new InputStreamReader(client.getInputStream()));
      sb = new StringBuilder();

      while ((line = rd.readLine()) != null) {
        sb.append(line + '\n');
      }

      System.out.println("body=" + sb.toString());

    } finally {
      client.disconnect();
      rd = null;
      sb = null;
      wr = null;
    }
  }

  public static void main(String[] args) throws Throwable {
    run();
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...