11
votes

Impossible d'ouvrir le flux: la requête HTTP a échoué! Http / 1.1 400 mauvaise demande

J'accélère des images d'un autre site Web. Je reçois cette erreur:

"Échec de l'ouverture du flux: Échec de la requête HTTP! HTTP / 1.1 400 Mauvaise demande" Erreur lors de la copie "certaines (pas toutes)" images. Voici mon code. xxx

}


2 commentaires

Est-ce tout votre code pour reproduire le problème? Il y a une attelle frisée non récoltée à la fin. De plus, où envoyez-vous une demande à un serveur Web? Lorsque vous obtenez l'erreur, quelle est la demande?


Je copie des images d'un autre site. Lorsque la fonction de copie est exécutée, je reçois cette erreur. $ S = copier ($ img, "images / ".cg, nœud_online_name1);


6 Réponses :


6
votes

Le seul problème que je peux penser est des espaces étant dans l'URL, probablement dans le nom du fichier. Tous les espaces d'une URL doivent être convertis à leur codage approprié, ce qui est% 20.

Si vous avez un nom de fichier comme celui-ci:

" http: // www.somewhere.com/images/img 1.jpg "

Vous obtiendrez l'erreur ci-dessus, mais avec ceci:

" http://www.somewhere.com/images/img%201.jpg " < p> Vous devriez avoir à des problèmes.

Il suffit d'utiliser le str_replace () pour remplacer les espaces ("") pour leur codage approprié ("% 20")

Il ressemble à ceci: xxx

pour plus d'informations sur le str_replace () Découvrez Le manuel PHP .


1 commentaires

Mieux que Str_replace serait d'appeler Urlencode sur la chaîne "IMG 1"



12
votes

J'ai eu le même problème, mais il a été résolu par

$url = str_replace(" ", "%20", $url);


1 commentaires

Merci. Tu as sauvé mon temps



20
votes

Je pense que Preg_replace gagne plus de meilleur sens car il fonctionnera avec les dernières versions du PHP, car Ereg_replace n'a pas fonctionné pour moi être obsolète xxx


0 commentaires

1
votes

Utilisez la fonction RawurlenCode ()

code la chaîne donnée selon »RFC 3986.

http://php.net/manual/ru/function.rawurlencode.php < / a>


0 commentaires

1
votes

Même une ébauche de fuite dans l'URL peut causer un fichier PHP (URL $) pour échouer. Dans les versions récentes de PHP ou Apache, même une ébauche de fuite dans l'URL entraînera l'erreur. L'URL apparaît donc de travailler dans un navigateur car le navigateur sait suffisamment à% 20 l'ébauche de fuite ou l'ignorer. C'était mon erreur quand même.

La lampe plus ancienne l'a permis. (c'est-à-dire que le même code a couru ok). Correction facile.


0 commentaires

0
votes

Il semble que l'URL ait des espaces ou d'autres caractères spéciaux, vous devez le coder, utiliser la fonction UrlenCode ()


0 commentaires