2013-04-18 10 views
6

szukałem informacji o tym, jak mogę wysłać informacje przy użyciu HttpPost sposób na Androida i zawsze widzę to:Wyślij ciąg na Androida z HttpPost bez użycia nameValuePairs

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost(posturl); 

List<NameValuePair> params = new ArrayList<NameValuePair>(); 
params.add(new BasicNameValuePair("Name","Var1")); 
params.add(new BasicNameValuePair("Name2","Var2")); 

httppost.setEntity(new UrlEncodedFormEntity(params));  
HttpResponse resp = httpclient.execute(httppost); 
HttpEntity ent = resp.getEntity(); 

Problemem jest to, że nie mogę tego zrobić , ponieważ muszę połączyć się z zasobem, który otrzymuje String z formatem XML.

Każdy pomysł o tym, jak mogę wysłać tylko ciąg bez użycia List<nameValuePair>

+0

Skąd pomysł, że powyższy kod jest związany z XML w jakikolwiek sposób? Dodatkowo twój ciąg będzie wymagał nazwy podczas wysyłania go przez http, więc otrzymasz parę nazwa/wartość lub nazwany parametr URL. –

+0

OK, proszę wyjaśnić, co jest twoim rzeczywistym problemem. Czy masz ciąg znaków XML i serwer nie może przyjąć wartości ciągu XML? Następnie musisz nam powiedzieć, jakie format (y) może zaakceptować serwer. Czy myślisz, że ta para nazwa-wartość ma coś wspólnego z XML? Wtedy odpowiedź brzmi: nie, nie. To po prostu pozbawia cię konieczności samodzielnego wypełniania ciała 'POST'. –

+0

OK, serwer używa javaScrip, na nim odczytał wysłany tekst i ten tekst jest plikiem XML lub ma ten format. Więc nie mogę korzystać z ValuePairs, ponieważ muszę wysłać tylko ciąg. ale metody, które widziałem w Internecie, wykorzystują tylko macierz ValuePairs. Teraz próbuję użyć odpowiedzi Praful Bhatnagara. Myślę, że zadziała – Fernando

Odpowiedz

19

próbowałeś za pomocą StringEntity? Powyższy kod może być aktualizowany w użyciu StringEntity, obserwuję to otrzymany kod:

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost(posturl); 


httppost.setEntity(new StringEntity("your string"));  
HttpResponse resp = httpclient.execute(httppost); 
HttpEntity ent = resp.getEntity(); 
+0

działa idealnie :) ty – Fernando

+0

ta metoda działa dla funkcji php o nazwie file_get_contents ('php: // input') tylko jeśli używamy $ _POST ['content'] to nie jest praca. Dlaczego tak jest? –

+0

dziękuję za pracę dla mnie –

0

Można użyć JSON jako parametr pocztowym. Spróbuj odnosząc FlexJson

+0

nie mogę używać JSON, serwer używa pliku JavaScript – Fernando

-1
// Sending HTTPs Requet to Server 

    try { 
     Log.v("GG", "Sending sever 1 - try"); 
     // start - line is for sever connection/communication 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(
       "10.0.0.1/abc.php"); 

     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
     nameValuePairs.add(new BasicNameValuePair("qrcode", contents)); 


     httppost.setEntity(new UrlEncodedFormEntity(
       nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     // end - line is for sever connection/communication 
     InputStream is = entity.getContent(); 

     Toast.makeText(getApplicationContext(), 
       "Send to server and inserted into mysql Successfully", Toast.LENGTH_LONG) 
       .show(); 

     // Execute HTTP Post Request 
     response= httpclient.execute(httppost); 

     entity = response.getEntity(); 
     String getResult = EntityUtils.toString(entity); 
     Log.e("response =", " " + getResult); 



    } catch (Exception e) { 
     Log.e("log_tag", "Error in http connection " 
       + e.toString()); 
    } 
+0

To pytanie zostało udzielone dawno temu, ale twoja odpowiedź nie jest poprawna. Używasz listy NameValuePairs i muszę wysłać tylko ciąg bez NameValuePairs. – Fernando