2011-02-09 4 views
5

Ne pas obtenir le corps de la réponse pour la demande de poste http dans android.
Je mentionne l'identification de l'utilisateur, mot de passe dans les paires de valeurs de nom et de mettre dans la demande de HttpPost parNe pas obtenir le corps de la réponse pour la demande de poste http dans Android?

postrequest.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

mais sur l'exécution Je reçois la réponse comme SC_OK (200), mais le corps de réponse est null.

Un autre problème est si je spécifie l'en-tête dans HTTPGet ou la requête HTTPPost en utilisant la fonction setHeader() je reçois la réponse BAD REQUEST (404).

Aidez-moi à résoudre le problème ci-dessus.

Merci & Cordialement,
SSuman185

+1

mettez le code où vous appelez et lisez la réponse. – Aliostad

+1

Avez-vous vérifié que le serveur a réellement envoyé une réponse? – sstn

+0

Le serveur n'est pas dans notre compagnie, son serveur de tiers. Et je reçois la demande BAD et de l'en-tête et les journaux du réseau j'ai trouvé que la réponse est du serveur seulement – Suman

Répondre

0

Salut ami essayer pl cette façon d'obtenir une réponse du serveur ..

Où lien donné est le lien où tu veux poster la demande ..

String link2 = "http://184.106.227.45/quaddeals/university-of-illinois/androids_deals/user_card_list.json"; 

DefaultHttpClient hc1 = new DefaultHttpClient(); 

ResponseHandler<String> res1 = new BasicResponseHandler(); 

HttpPost postMethod1 = new HttpPost(link2); 

List<NameValuePair> nameValuePairs1 = new ArrayList<NameValuePair>(1); 

nameValuePairs1.add(new BasicNameValuePair("user_id",account_userId)); 

postMethod1.setEntity(new UrlEncodedFormEntity(nameValuePairs1)); 

String response1 = hc1.execute(postMethod1, res1); 
+0

Salut Venkatesh, En fait j'utilise HttpClient et client.execute() et il fonctionne très bien dans la cible mais pas dans le simulateur, comme nous utilisons le proxy dans notre société, j'ai essayé de mettre le proxy au simulateur avec -http-proxy Eh bien, mais toujours pas de chance – Suman

1

Voici une méthode pour POST facile à une page, et obtenir la réponse sous forme de chaîne. Le premier param (le HashMap) est une liste de valeurs-clés de paramètres que vous voulez envoyer. Il n'y a pas de gestion des erreurs, donc vous devrez faire cela:

public static String doPost(HashMap<String,String> params, String url) { 
     HttpPost httpost = new HttpPost(url); 
     try { 
      httpost.setURI(new URI(url)); 
     } catch (URISyntaxException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     HttpResponse response = null; 

     List <NameValuePair> nvps = new ArrayList <NameValuePair>(); 

     Set entryset = params.entrySet(); 
     Iterator iterator = entryset.iterator(); 
     Log.d("Posted URL: ", url+" "); 
     while(iterator.hasNext()) { 
      Map.Entry mapentry = (Map.Entry)iterator.next(); 
      String key = ((String)mapentry.getKey()).toString(); 
      String value = (String)mapentry.getValue(); 
      nvps.add(new BasicNameValuePair(key, value)); 

      Log.d("Posted param: ", key+" = "+value); 
     } 

     try { 
      httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 
      try { 
       httpost.setURI(new URI(url)); 
      } catch (URISyntaxException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      response = getClient().execute(httpost); 
      HttpEntity entity = response.getEntity(); 

      return convertStreamToString(entity.getContent()); 
     } catch (Exception e) { 
      // some connection error occurred, nothing we can do 
      e.printStackTrace(); 
     } 

     return null; 
    } 
Questions connexes