Cookie拒绝为Rest API调用

时间:2017-02-02 13:05:26

标签: java rest http salesforce

经过一年的工作,java代码突然出现以下错误

  

2017年2月2日下午6:28:39 org.apache.commons.httpclient.HttpMethodBase   processCookieHeaders警告:Cookie被拒绝:“$ Version = 0;   BROWSERID = MX-kTzLhTUm29MoIKmS6ag; $ PATH = /; $域= .salesforce.com”。   域属性“.salesforce.com”违反了RFC 2109:host minus   域名可能不包含任何点

我不是解决此问题的java开发人员。我对这个错误一无所知。

我的代码是在哪里使用httpclient

HttpClient httpclient = new HttpClient();   
httpclient.getParams().setParameter(HttpClientParams.ALLOW_CIRCULAR_REDIRECTS, true);
httpclient.getParams().setParameter(HttpClientParams.COOKIE_POLICY, CookiePolicy.RFC_2965);
PostMethod post = new PostMethod(tokenUrl);
post.addParameter("grant_type", grant_type);
post.addParameter("client_id", client_id);
post.addParameter("client_secret", client_secret);
post.addParameter("username", username);
post.addParameter("password", password);

httpclient.executeMethod(post);

解决此问题需要什么?任何帮助都很明显。感谢!!!

修改

班级中使用的套餐

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
import java.util.logging.Logger;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.io.IOUtils;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;

1 个答案:

答案 0 :(得分:2)

我有同样的问题,我已经解决了。

你必须把这个:

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

而不是:

httpclient.getParams().setParameter(HttpClientParams.COOKIE_POLICY, CookiePolicy.RFC_2965);

BROWSER_COMPATIBILITY 与常见的Cookie管理实践兼容,另一方面,默认情况下符合 RFC2109

请接受我的建议:)