2015-11-16 160 views
0

[求助]在netty中发出HTTP请求时填充请求标头值

我无法解决以下错误。请帮助我调试问题。我得到的错误是“无法对ClientCookieEncoder类型的非静态方法encode(Cookie ..)进行静态引用。ClientCookieEncoder已被弃用,文档建议较早版本的静态修改器用于编码方法,这在新版本中不存在。

的代码片段已经从http://netty.io/4.0/xref/io/netty/example/http/snoop/HttpSnoopClient.html

package io.netty.example.http.snoop; 

    ... 
    import io.netty.handler.codec.http.cookie.ClientCookieEncoder; 
    import io.netty.handler.codec.http.cookie.DefaultCookie; 
    .. 

    public final class HttpSnoopClient { 

    ... 

    // Prepare the HTTP request. 
      HttpRequest request = new DefaultFullHttpRequest(
        HttpVersion.HTTP_1_1, HttpMethod.GET, uri.getRawPath()); 
      request.headers().set(HttpHeaders.Names.HOST, host); 
      request.headers().set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.CLOSE); 
      request.headers().set(HttpHeaders.Names.ACCEPT_ENCODING, HttpHeaders.Values.GZIP); 

    // Set some example cookies. 
      request.headers().set(
        HttpHeaders.Names.COOKIE, 
        ClientCookieEncoder.encode(
          new DefaultCookie("my-cookie", "foo"), 
          new DefaultCookie("another-cookie", "bar"))); 
    ... 

    } 
+1

你确定你使用的是网状4 –

+0

目前我使用网状 - 全4.0? 33.Final.jar在我的图书馆里d http://netty.io/4.0/xref/io/netty/example/http/snoop/HttpSnoopClient.html文档作为参考。 – user2582651

+0

我发现了错误。由于日食中的进口导致错误。为了避免我使用过http.cookie.ClientCookieEncoder的已弃用方法。 – user2582651

回答

0

引用的解决方案是:

import io.netty.handler.codec.http.ClientCookieEncoder; 
import io.netty.handler.codec.http.DefaultCookie; 

…. 

// Set some example cookies. 
     request.headers().set(
       HttpHeaders.Names.COOKIE, 
       ClientCookieEncoder.encode(
         new DefaultCookie("my-cookie", "foo"), 
         new DefaultCookie("another-cookie", "bar")));