代码之家  ›  专栏  ›  技术社区  ›  Berlin Brown

从servlet发出URL请求并保留头信息

  •  0
  • Berlin Brown  · 技术社区  · 16 年前

    我需要从servlet发出请求,但我也需要保留所有头信息。在请求对象中。

    例如,如果我在doget方法中执行如下操作,是否有一种简单的方法可以将该信息传递给url连接对象?

    URL url = new URL();
    URLConnection uc = url.openConnection();
    uc.setDoOutput(true);
    uc.setDoInput(true);
    uc.setUseCaches(false);
    
    uc.setRequestProperty("Content-type",
    "application/x-www-form-urlencoded");
    
    DataOutputStream dos = new DataOutputStream(uc.getOutputStream());
    dos.writeBytes(strInEnc);
    dos.flush();
    dos.close();
    
    InputStreamReader in = new InputStreamReader(uc.getInputStream());
    int chr = in.read();
    while (chr != -1) {
    taResults.append(String.valueOf((char) chr));
    chr = in.read(); 
    
    2 回复  |  直到 16 年前
        1
  •  2
  •   erickson    16 年前

    使用 addRequestProperty 方法 URLConnection .

    Enumeration<?> names = req.getHeaderNames();
    while (names.hasMoreElements()) {
      String key = (String) names.nextElement();
      Enumeration<?> values = req.getHeaders(key);
      while (values.hasMoreElements()) {
        uc.addRequestProperty(key, (String) values.nextElement());
      }
    }
    

    如果使用httpclient,则会有一组类似的循环,除非它内置了对 ServletRequest . (如果没有,为什么还要考虑大量的附加依赖项和非标准API?)

        2
  •  1
  •   kgiannakakis    16 年前

    您可以使用request.getHeaderNames()方法枚举所有头。但是,我建议使用 HttpClient 而不是URL连接来发出请求。

    推荐文章