HttpClient警告:Cookie被拒绝:非法域属性

时间:2011-09-18 03:20:12

标签: java cookies warnings httpclient

我正在使用HttpClient最新版本(4.x)。而现在我正在尝试做一个GET请求。 我只是发布了一个Get请求。

这是我的代码;

public class Poster {

    static boolean routing1 = true, routing2 = true;
    static int counter1 = 0, counter2 = 0;
    DefaultHttpClient oHtp = null;
    HttpGet oHGet = null;
    HttpResponse oHRes = null;


    private void test(String fullAddress) throws Exception {
        oHtp = new DefaultHttpClient();
        oHGet = new HttpGet(fullAddress);

        HttpResponse response = oHtp.execute(oHGet);
        System.out.print(response.getStatusLine());

        HttpEntity entity = response.getEntity();
        if (entity != null) {
            entity = new BufferedHttpEntity(entity);
            //  System.out.println(EntityUtils.toString(entity));
            System.out.print("\t entity is retrieved... ");
        }


        oHtp.getConnectionManager().shutdown();
    }
}

我只是很好地执行它。 首先是

new Poster().test("http://123.xl.co.id/profile.php");

,第二个是

 new Poster().test("http://goklik.co.id/");

你,只有第二个......我得到了这个错误信息;

  

2011年9月18日上午10:11:30   org.apache.http.client.protocol.ResponseProcessCookies processCookies   警告:Cookie被拒绝:“[version:0] [name:CookiePst] [value:   0149 = xwGHF7HYDHLHQ84Isp / eSy9vu + Xq6cT12wxg1A ==] [域:   .mcore.com] [路径:/] [到期日:太阳9月18日10:38:59 ICT 2011]“。非法   域属性“mcore.com”。原产地:“goklik.co.id”

我意识到这里涉及到Cookie。但我不明白警告意味着什么。我也不知道如何解决它(Cookie没有被拒绝)。 HOpe有一些亮光可以帮助你清除我的想法....:D

6 个答案:

答案 0 :(得分:23)

也许为时已晚,但我遇到了同样的问题而且我找到了帮助我解决的问题,只需将Cookie Policy设置为浏览器兼容性:

httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY,
        CookiePolicy.BROWSER_COMPATIBILITY);

以下是可能的值:

  

Cookie策略提供相应的cookie管理interfrace   对于给定类型或版本的cookie。

     

默认情况下使用RFC 2109规范。其他支持   规范可以在适当的时候选择,也可以在默认时设置   期望的

     

提供以下规格:

     
      
  • BROWSER_COMPATIBILITY:与常见的Cookie管理实践兼容(即使它们不符合100%标准)
  •   
  • NETSCAPE:符合Netscape Cookie草案
  •   
  • RFC_2109:符合RFC2109(默认)
  •   
  • IGNORE_COOKIES:不自动处理Cookie
  •   

答案 1 :(得分:18)

你无法“修复”它。该网站正在尝试设置一个不允许设置的cookie,而您正在使用的apache客户端库正在告诉您它。

当域名为mcore.com

时,它正尝试为goklik.co.id设置Cookie

答案 2 :(得分:1)

我正在使用http客户端4.5.2,这是设置cookie规范,以轻松解决我的问题。如何实例化客户端的示例:

httpClient = HttpClients.custom()
                .setDefaultRequestConfig(RequestConfig.custom()
                        // Waiting for a connection from connection manager
                        .setConnectionRequestTimeout(10000)
                        // Waiting for connection to establish
                        .setConnectTimeout(5000)
                        .setExpectContinueEnabled(false)
                        // Waiting for data
                        .setSocketTimeout(5000)
                        .setCookieSpec("easy")
                        .build())
                .setMaxConnPerRoute(20)
                .setMaxConnTotal(100)
                .build();

答案 3 :(得分:0)

只是想改进Eric的答案,因为它没有直接解决我的情况,但将CookieSpecs更改为IGNORE_COOKIES解决了我的问题。

RequestConfig customizedRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();
HttpClientBuilder customizedClientBuilder = 
HttpClients.custom().setDefaultRequestConfig(customizedRequestConfig);
CloseableHttpClient client = customizedClientBuilder.build(); // customized client,

因为在我的HttpClient 4.5版本中,CookieSpecs.BROWSER_COMPATIBILITY已经折旧。

答案 4 :(得分:0)

在v4.5.x(现在是4.5.6)中,这是抑制警告的最简单方法:

HttpClientBuilder clientBuilder = HttpClientBuilder.create();
clientBuilder.disableCookieManagement();
HttpClient httpClient = clientBuilder.build();

答案 5 :(得分:0)

如果您不需要处理Cookie,则可以简单地将其禁用,根据您使用的API,使用org.apache.http.impl.cookie.IgnoreSpecProviderorg.apache.http.impl.cookie.IgnoreSpec。仅在disableCookieManagement()上调用HttpClientBuilder