La longueur requise", lors de la publication de données avec cURL
Je reçois un <h1>Length required</h1>
d'erreur, lors de la soumission d'un post-chaîne à un serveur.
$cookie = "Secret cookie data here";
$searchData = array(
'__EVENTTARGET' => 'ctl00$main$btn',
'ctl00$main$tbMNr' => $_GET['smth'],
'ctl00$main$tbMb' => $_GET['smthElse'],
'__VIEWSTATE' => 'smthElseHere'
);
//Commenting this out, as suggested by user lonesomeday
//foreach ($searchData as &$elem) //This should not be necessary
// $elem = urlencode($elem);
//create a new cURL resource
$fields = http_build_query($searchData); //Assuming it's an array
if ($ch = curl_init("http://mysite.com"))
{
//set URL and other appropriate options
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true); //Suggestion from Berry Langerak - no difference, same error
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
}
$result = curl_exec($ch);
if ($result === false) {
echo 'Curl error: ' . curl_error($ch);
}
echo "<pre>".$fields."</pre>".$result; //For debugging ONLY
curl_close($ch);
Si j'commentaire la CURLOPT_POSTFIELDS
et CURLOPT_POST
, tout va bien.
Des suggestions?
Modifier
Quand j'ajoute cette ligne
curl_setopt($ch, CURLOPT_HEADER, array('Content-Type:application/x-www-form-urlencoded'));
Je vois cette erreur, juste avant Length Required
HTTP/1.1 411 Longueur Nécessaire Content-Type: text/html Date: Lundi, 16 Mai 2011 à 10:20:54 GMT Connection: close Content-Length: 24
Avez-vous essayé avec le "ce ne devrait pas être nécessaire"? Parce que non, il ne devrait pas être nécessaire.
Oui, il ne fait aucune différence
Oui, il ne fait aucune différence
OriginalL'auteur Ragnar123 | 2011-05-16
Vous devez vous connecter pour publier un commentaire.
Votre utilisation est complètement mélangé et confus.
Ne changent pas Content-Length-vous, mais laissez libcurl le faire afin qu'il soit correct.
Avez-vous l'intention de faire un multipart formpost (passer d'un tableau de hachage à la POSTFIELDS option) ou un "régulier" (passer d'une chaîne à la POSTFIELDS option) ? Le récepteur pourra vraisemblablement supposons que l'un d'entre eux et vous ne pouvez pas simplement choisir au hasard un type à votre propre volonté.
Lorsque vous avez le bon POST et vous savez que vous envoyer les données correctement (à vérifier à l'encontre d'un enregistré brower utilisation), puis vous pouvez voir ce que le serveur dit et si il insiste toujours pour quelque chose est mauvaise, vous regardez en arrière sur la session enregistrée et ajuster votre demande à être de plus en plus semblables. Rincer et répéter jusqu'à ce qu'il fonctionne.
http_build_query($searchData)
Il me semble que je ne suis pas en mesure d'utiliser la POSTE et des Cookies en même temps avec curl, voir ce fil de discussion, j'ai créé par la suite, peut-être le rétrécissement de la question: stackoverflow.com/questions/6019294/....Eh bien, le problème c'est quand j'ai chargé le cookie.
OriginalL'auteur Daniel Stenberg
Ehrm, je ne vois pas ce que tu dis cURL que votre intention est de faire une requête POST. Ajoutez l'option suivante:
Qui pourrait résoudre le problème.
Supprimer le contenu de la longueur de la ligne, et voir si cela fait une différence? Si vous fournissez un est incorrect de valeur, je peux imaginer le serveur ne vous aime pas.
OriginalL'auteur Berry Langerak
Voulais juste ajouter que pour l'amour de gens qui sont venus ici avec les mêmes symptômes:
Si vous postez IIS 6 et n'ont pas de Contenu du tout, vous avez encore besoin d'envoyer du Contenu-Durée: 0 ou il va se plaindre "Durée".
OriginalL'auteur BigOmega
MODIFIER : as-tu essayer de supprimer les & amp; ?
=============
Avez-vous essayer de commenter
Et vos données de cookie valide?
Essayer de placer un agent en :
Mis en place un référent :
curl_setopt($ch, CURLOPT_REFERER,$url);
Oui, j'ai essayé de simples demandes. Je ne pense pas que le serveur reçoit toutes les demandes, après que j'ai envoyé le cookie.
OriginalL'auteur Paolo_Mulder
OriginalL'auteur mahesh