HTTPURLConnection - 400 Bad Request

- Je vérifier cette Post. Mais je n'ai pas encore de comprendre ce que la logique de l'erreur pourrait être. J'ai toujours cette erreur. J'ai essayé de vider l'émulateur de la circulation. Mais je n'ai toujours pas obtenir ma tête autour de ce que le problème pourrait être.

De la circulation de vidage, c'est ce que Android est l'envoi d'une requête au serveur. Vous pouvez voir la réponse aussi:

 GET /Authenticate/ HTTP/1.1
 Authorization: Basic asdfasdfasdfas

 Accept-Charset: UTF-8
 Host: www.domain.com
 User-Agent: Dalvik/1.4.0 (Linux; U; Android 2.3.3; sdk Build/GRI34)
 Connection: Keep-Alive
 Accept-Encoding: gzip

 neQPˆ? 6   6   RT 4VRT 5 E (
 »  Cl¦'
 PÙ[    ˜ároP"8"  neQPI "  "  RT 4VRT 5 E
 ¼  @ËVl¦'
 PÙ[    ˜ároP"8«‹  HTTP/1.1 400 Bad Request
 Date: Thu, 13 Sep 2012 04:47:42 GMT
 Server: Apache/2.2.15 (CentOS)
 Content-Length: 310
 Connection: close
 Content-Type: text/html; charset=iso-8859-1

 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <html><head>
 <title>400 Bad Request</title>
 </head><body>
 <h1>Bad Request</h1>
 <p>Your browser sent a request that this server could not understand.<br />
 </p>
 <hr>
 <address>Apache/2.2.15 (CentOS) Server at www.domain.com Port 80</address>
 </body></html>
 neQPé¬ 6   6   RT 4VRT 5 E (
 ½  Al¦'
 PÙ[    ™îároP"8 ,  neQPéË @   @   RT 5RT 4V E  (çØ@ @³-
 l¦'Ù[ Páro ™îP )E            neQPéË @   @   RT 5RT 4V E  (çÙ@ @³,
 l¦'Ù[ Páro ™ïP )D            neQPö“
  ©   ©   RT 5RT 4V E  ›k‹@ @¶Á

  ³ër,9Jr ‘Pÿÿ6B  WRTE   w  [   *  ¨­«º[ 09-13 04:47:41.822   446:0x1c7 D/400      ]
  text/html; charset=iso-8859-1Bad Request

Je ne sais pas ce que ces caractères supplémentaires veux dire. Mais j'essayais d'identifier le problème à partir d'elle.

C'est le code de base:

String credentials = username + ":" + password;
byte[] toencode = null;
try {
    toencode = credentials.getBytes("UTF-8");
} catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
}
HttpURLConnection conn = null;
try {
    //Utilities.isNetworkAvailable(context);
    URL url = new URL(params[0]);   
    Log.d(params[0],"UR");  
    conn = (HttpURLConnection) url.openConnection();
    conn.setRequestProperty("Authorization", "Basic " + Base64.encodeToString(toencode, Base64.DEFAULT));
    conn.setRequestProperty("Accept-Charset", "UTF-8");
    conn.setRequestProperty("Host", "www.domain.com");
    conn.setRequestMethod("GET");
    conn.setDoOutput(true);

    String data = conn.getInputStream().toString();
    return data;
}

Des idées?

Mise à jour

J'ai vérifié Serveur web Logs pour voir si les requêtes sur le serveur et si il n'y avait aucun problème avec la demande. C'est ce que je vois à partir de journaux d'erreur:

 [Thu Sep 13 10:05:24 2012] [error] [client 91.222.195.132] client sent HTTP/1.1 request without  hostname (see RFC2616 section 14.23): /Authenticate/
 [Thu Sep 13 23:11:57 2012] [error] [client 91.222.195.132] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /Authenticate/
 [Thu Sep 13 23:12:03 2012] [error] [client 91.222.195.132] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /Authenticate/

Cependant je suis en train de la propriété d'en-tête de la demande.

Des idées?

InformationsquelleAutor Kevin Rave | 2012-09-13