HttpURLConnection demande d'OBTENIR l'obtention de 400 Bad Request

Je suis en train de faire une requête GET avec certains paramètres en Java à l'aide de HttpURLConnection. Chaque fois que je fais cela, cependant, je reçois un 400: Bad Request à chaque fois.
Que dois-je modifier pour le faire fonctionner?

String url = "http://www.awebsite.com/apath?p1=v1&p2=v2&p3=v3";
HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();
conn.setDoInput(true);
conn.setDoOutput(false);
conn.setUseCaches(false);
conn.setRequestMethod("GET");
conn.setRequestProperty("Host", "www.awebsite.com");
conn.setRequestProperty("User-Agent", "Mozilla/4.0");
conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
conn.setRequestProperty("Accept-Language", "en-us,en;q=0.5");
conn.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
conn.setRequestProperty("Keep-Alive", "115");
conn.setRequestProperty("Connection", "keep-alive");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder data = new StringBuilder();
String s = "";
while((s = br.readLine()) != null)
    data.append(s);
String pageData = data.toString();

J'ai essayé:

  • À l'aide de URLEncoder sur la totalité de la requête (après ?) et juste sur les valeurs.
  • Réglage de la longueur du contenu de l'en-tête.
  • Configuration de la connexion à l'utilisation de la sortie et de mettre la requête que la sortie.
Êtes-vous d'écrire votre propre bot? Pourquoi êtes-vous le clonage de Mozilla?
J'ai changé l'URL google.com et il a bien fonctionné pour moi.
Élite homme que j'ai utilisé Mozilla/4.0 pour le User-Agent que j'ai lu dans la boucle de la documentation qu'il est nécessaire pour certains scripts Cgi. @hoipolloi Bizarre, le contexte, je suis en utilisant il en a une assez longue requête et qui ne fonctionne pas.
Avez-vous été en mesure de résoudre ce problème, j'ai un scénario similaire, je reçois une réponse 200 si mon url de connexion déclenche une courte recherche, mais j'ai un 400 lorsque la requête est longue.
Non, je n'ai pas le réparer, mais je suis venu à une conclusion quant à la cause: stackoverflow.com/questions/6341602/...

OriginalL'auteur DanielGibbs | 2011-06-14