Java - Pourquoi HttpClient ne pas envoyer mes témoins?
J'essaie d'envoyer des cookies avec un post de formulaire à l'aide de l'Apache HttpClient et, pour une raison quelconque, le serveur reçoit la requête, mais pas les cookies. Voici mon code:
DefaultHttpClient client = new DefaultHttpClient();
//Set the cookies...
{
String Domain = MyGetParameter("Domain");
BasicCookieStore cookieStore = new BasicCookieStore();
String[] strs = GetParameterSplitted("PostCookies");
int size = strs.length;
for (int i=0; i<size-1; i+=2)
{
//JOptionPane.showMessageDialog(null, strs[i]+" = "+FromBase64(strs[i+1], "UTF-8"));
BasicClientCookie cookie = new BasicClientCookie(strs[i], FromBase64(strs[i+1], "UTF-8"));
cookie.setDomain(Domain);
cookie.setPath("/");
//cookie.setSecure(true);
cookieStore.addCookie(cookie);
}
client.setCookieStore(cookieStore);
}
HttpPost post = new HttpPost(url.toURI());
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(10);
//Set the form POST parameters...
{
String[] strs = GetParameterSplitted("PostParams");
int size = strs.length;
for(int i=0; i<size-1; i+=2)
{
String name = strs[i].trim();
String value = FromBase64(strs[i+1].trim(), "UTF-8");//, "UTF-8"
nameValuePairs.add(new BasicNameValuePair(name, value));
}
}
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
post.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
post.getParams().setParameter(ClientPNames.COOKIE_POLICY, org.apache.http.client.params.CookiePolicy.BROWSER_COMPATIBILITY);
HttpResponse response = client.execute(post);
int StatusCode = response.getStatusLine().getStatusCode();
Le site utilise le protocole HTTP (pas de HTTPS), j'ai assurez-vous que le nom de domaine est correctement réglé pour les cookies (http://mysite
) et les cookies semblent être correctement réglée lorsque le code ci-dessus s'exécute.
Quelqu'un a une idée de pourquoi ça ne se passe sur le serveur?
J'ai vu d'autres questions similaires sur ce site, mais rien ne semblait aider.
Êtes-vous sûr que les cookies viennent de l'exacte même domaine que vous envoyez? Par exemple
Oui. En fait, je ne pense pas que la demande pourrait même atteindre le serveur si le POSTE l'url est différente. Je déboguer le site localement. J'ai mis le cookie de domaine comme
Ai-je besoin de définir le chemin d'accès comme ça:
http://stackoverflow.com
et http://www.stackoverflow.com
différents domaines.Oui. En fait, je ne pense pas que la demande pourrait même atteindre le serveur si le POSTE l'url est différente. Je déboguer le site localement. J'ai mis le cookie de domaine comme
http://mysite
et je poste le formulaire à mysite/blah/blah
. Je ne pense pas que le http://
partie joue aucun rôle, n'est ce pas?Ai-je besoin de définir le chemin d'accès comme ça:
cookie.setPath("/blah/blah");
?OriginalL'auteur user2173353 | 2013-04-08
Vous devez vous connecter pour publier un commentaire.
Vous regardez de près, si la date de votre cookie expiré httptClient pas envoyer ce cookie, sur ce que vous devriez mettre les cookies date.
Et dans le nom de domaine aura pas de "http://", seulement simplement le nom de domaine.
Par Exemple:(http://www.gmail.com => comme cela pour écrire setDomain("www.gmail.com"))
Cet exemple, j'ai ajouter 100 jour pour jour et l'ensemble de cookie.
Exemple envoyer envoyer des données via HttpClient avec cookie:
http://
dans le domaine de cookie qui a fait les choses en panne... Merci.l'homme qui vous a sauvé ma vie, a lutté pour les 12 heures et j'ai trouvé que j'inclus https:// dans le nom de domaine.
Merci @Guanlun, je suis heureux que ma question a aidé à vous
Merci pour ce domaine, il m'a aidé.
OriginalL'auteur mr.boyfox