2016-05-04 9 views
0

Ich versuche, Post-Variablen durch UrlEncoding von Android auf PHP-Seite zu senden, die für mich funktioniert, wenn ich nur eine Variable sende. Wie man mehr als eine Variable kodiert, habe ich selbst versucht.Senden von Variablen über Post-Android mit URLEncoding

protected String doInBackground(String... params) { 
    try { 
     String link = "http://URL.php"; 
     String name = params[0]; 
     String email = params[1]; 
     String phone = params[2]; 
     String pass = params[3]; 
     String data = URLEncoder.encode("phone", "UTF-8") + "=" + URLEncoder.encode(phone, "UTF-8"); 
     String data1 = URLEncoder.encode("email", "UTF-8")+ "=" + URLEncoder.encode(email, "UTF-8"); 
     String data2 = URLEncoder.encode("name", "UTF-8")+ "=" + URLEncoder.encode(name, "UTF-8"); 
     String data3 = URLEncoder.encode("pass", "UTF-8")+ "=" + URLEncoder.encode(pass, "UTF-8"); 
     URL url = new URL(link); 
     URLConnection conn = url.openConnection(); 

     conn.setDoOutput(true); 
     OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
     wr.write(data); 
     wr.write(data1); 
     wr.write(data2); 
     wr.write(data3); 
     wr.flush(); 

Dies macht den Job, aber nur erste Variable ist über PHP-Seite zugänglich.

Antwort

1

Sie sind nur in der Lage, die erste Variable zugreifen, weil Sie nicht alle Parameter mit & anhängt. Sie können diese Methode verwenden, um eine Parameterzeichenfolge abzurufen.

public String getPostDataString(HashMap<String, String> params){ 
     StringBuilder result = new StringBuilder(); 
     boolean first = true; 
     for (Map.Entry<String, String> entry : params.entrySet()) { 
      if (first) 
       first = false; 
      else 
       result.append("&"); 
      try { 
       result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); 
       result.append("="); 
       result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 

     } 
     return result.toString(); 
    } 

Sie können einen Parameter Zeichenfolge wie folgt erhalten:

HashMap<String, String> params = new HashMap<>(); 
params.put("phone",phone); 
params.put("email",email); 
params.put("name",name); 
params.put("pass",pass); 
String paramString = getPostDataString(params); 
0

Versuchen Sie folgendes:

wr.write(data); 
wr.flush(); 
wr.write(data1); 
wr.flush(); 
wr.write(data2); 
wr.flush(); 
wr.write(data3); 
wr.flush();