有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

googleappenginejava使用java。net检索网页的步骤如何正确检索响应标头

我正在尝试使用java。net连接到Google App Engine for Java中的远程URL

连接之后,我想获取响应头---

我正在使用以下代码(在连接和检索一些数据之后)-- 注意—“客户端”表示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. # 1 楼答案

    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();
      }
    
    }