2016-08-03 18 views
2

Ich verwendete HttpClient, aber jetzt ist veraltet, so jetzt möchte ich HttpURLConnection verwenden, aber ich kann nicht herausfinden, wie man es richtig verwendet.Android HttpURLConnection senden Parameter

Ich möchte zwei Strings per Post an ein PHP-Skript senden: ("Benutzername", "Passwort"). Wie kann ich das erreichen?

+0

@Sanaoop Nr Es verwendet NameValuePair und es ist veraltet –

Antwort

0

Da die NameValuePair veraltet ist. Versuchen Sie, diese

public String performPostCall(String requestURL, 
      HashMap<String, String> postDataParams) { 

     URL url; 
     String response = ""; 
     try { 
      url = new URL(requestURL); 

      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setReadTimeout(15000); 
      conn.setConnectTimeout(15000); 
      conn.setRequestMethod("POST"); 
      conn.setDoInput(true); 
      conn.setDoOutput(true); 


      OutputStream os = conn.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(
        new OutputStreamWriter(os, "UTF-8")); 
      writer.write(getPostDataString(postDataParams)); 

      writer.flush(); 
      writer.close(); 
      os.close(); 
      int responseCode=conn.getResponseCode(); 

      if (responseCode == HttpsURLConnection.HTTP_OK) { 
       String line; 
       BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       while ((line=br.readLine()) != null) { 
        response+=line; 
       } 
      } 
      else { 
       response=""; 

      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return response; 
    } 

....

private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException{ 
     StringBuilder result = new StringBuilder(); 
     boolean first = true; 
     for(Map.Entry<String, String> entry : params.entrySet()){ 
      if (first) 
       first = false; 
      else 
       result.append("&"); 

      result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); 
      result.append("="); 
      result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); 
     } 

     return result.toString(); 
    } 

EDIT

Wenn Sie die ArrayList<NameValuePair> für Parameter nicht benötigen, ist dies eine kürzere Lösung, die die Query-String mit Hilfe baut die Uri.Builder Klasse:

URL url = new URL("http://yoururl.com"); 
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 
conn.setReadTimeout(10000); 
conn.setConnectTimeout(15000); 
conn.setRequestMethod("POST"); 
conn.setDoInput(true); 
conn.setDoOutput(true); 

Uri.Builder builder = new Uri.Builder() 
     .appendQueryParameter("firstParam", paramValue1) 
     .appendQueryParameter("secondParam", paramValue2) 
     .appendQueryParameter("thirdParam", paramValue3); 
String query = builder.build().getEncodedQuery(); 

OutputStream os = conn.getOutputStream(); 
BufferedWriter writer = new BufferedWriter(
      new OutputStreamWriter(os, "UTF-8")); 
writer.write(query); 
writer.flush(); 
writer.close(); 
os.close(); 

conn.connect(); 
+0

Danke für Ihre Antwort, aber das ist, dass ich den ganzen Tag im Internet suchen, und ich verstehe es nicht. Wie sende ich die Zeichenfolgen (Passwort und Benutzername) –

+0

Ich habe das Update nicht gesehen, vielen Dank! –

+0

@GustavoSerna Hoffe es half .. :) :) Happie coding broah – Sanoop

Verwandte Themen