2016-05-04 2 views
0

Я пытаюсь отправить переменные post через UrlEncoding с android на php-страницу, которая работает для меня, если я отправляю только одну переменную. Итак, как кодировать более одной переменной, я пробовал некоторые самостоятельно.Отправка переменных через post android с использованием 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(); 

Выполнение этой задачи, но только первая переменная доступна через php-сторону.

ответ

1

Вы только в состоянии получить доступ к первой переменной, потому что вы не добавляя каждый параметр с &. Вы можете использовать этот метод для получения строки параметров.

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(); 
    } 

Вы можете получить строку параметров, как это:

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

Попробуйте это:

wr.write(data); 
wr.flush(); 
wr.write(data1); 
wr.flush(); 
wr.write(data2); 
wr.flush(); 
wr.write(data3); 
wr.flush(); 
Смежные вопросы