2013-05-21 2 views
0

Работа над взятием ввода от пользователей EditText и форматирование его для входа в URL-адрес $_GET, поэтому я могу сохранить его в базе данных mysql. На данный момент приложение будет хранить только первое значение в каждом поле EditText.Ввод нескольких значений в сообщение url

Если кто-то может дать мне указатель на то, что я делаю неправильно, это было бы мило!

public class NewIdea extends Activity{ 
    /** Called when the activity is first created. */ 
private List<EditText> editTextList = new ArrayList<EditText>(); 
private Button button; 
private EditText idea, des; 
private Object mPassword; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_screen); 

     button = (Button) findViewById(R.id.btnCreateIdea); 
     idea = (EditText) findViewById(R.id.inId); 
     des = (EditText) findViewById(R.id.inDis); 

     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       //StringBuilder params = new StringBuilder(); 
       //for (int i = 0; i < des.length(); i++) { 
       //params.append(des.getText().toString());} 

       String mUsername = idea.getText().toString(); 
       String mPassword = des.getText().toString(); 

       String answer = null; 
       StringBuilder params = new StringBuilder(mPassword); 
       for(int i = 0; i < des.getText().length(); i++) { 
        params.append(des + "%" +i) ; 
        answer = params.toString(); 
       } 
       tryLogin(mUsername, answer); 
      } 
     }); 
    } 

    protected void tryLogin(String idea, String answer) 
    {   
     HttpURLConnection connection; 
     OutputStreamWriter request = null; 

     URL url = null; 
     String response = null;   
     String parameters = "?ideaname="+idea+"&description="+answer; 
     try 
     { 
      url = new URL("http://"server"/PHP/create_idea.php"+ parameters); 
      connection = (HttpURLConnection) url.openConnection(); 
      connection.setDoOutput(true); 
      connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
      connection.setRequestMethod("GET");  
      request = new OutputStreamWriter(connection.getOutputStream()); 
      request.write(parameters); 
      request.flush(); 
      request.close();    
      String line = parameters;    
      InputStreamReader isr = new InputStreamReader(connection.getInputStream()); 
      BufferedReader reader = new BufferedReader(isr); 
      StringBuilder sb = new StringBuilder(); 
      while ((line = reader.readLine()) != null) 
      { 
       sb.append("%" + line); 
      } 
      // Response from server after login process will be stored in response variable.     
      response = sb.toString(); 
      // You can perform UI operations here 
      Toast.makeText(this,"Message from Server: \n"+ response, 0).show();    
      isr.close(); 
      reader.close(); 
     } 
     catch(IOException e) 
     { 
      // Error 
     } 
    } 
} 

ответ

0

При работе с логинами и паролем, работающей с запросом GET никогда не ценятся, как и GET добавляет данные в URL, который виден публично. рекомендуется использовать запрос POST. вы можете отправить свои данные на сервер с помощью этого метода, просто добавьте свои данные в NameaValuePair и добавьте в качестве объекта для отправки запроса. на стороне сервера, вы можете получить данные с помощью

$_POST['key'] 

попробовать этот метод

public static String HitServerPOST(String url,List<NameValuePair> nameValuePairs) { 
    DefaultHttpClient hc = new DefaultHttpClient(); 
    ResponseHandler<String> res = new BasicResponseHandler(); 
    HttpPost postMethod = new HttpPost(url); 
    String response = null; 

    try { 
     postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    try { 
     response = hc.execute(postMethod, res); 
    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return response; 
} 

и призвание будет как

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
nameValuePairs.add(new BasicNameValuePair("key1","value1")); 
nameValuePairs.add(new BasicNameValuePair("key2","value2")); 
String response = HitServerPOST(SERVER_URL,nameValuePairs); 
+0

где делают я ссылаться на 'Струнный mPassword = des.getText(). нанизывать(); в ArrayList? 'На самом деле это не пароль, я повторно использовал код, это просто поле, полное txt. но если пост работает лучше – user2360766

+0

nameValuePairs.add (новый BasicNameValuePair («Пароль», mPassword)); , даже если его не пароль, еще POST-запрос лучше, чем GET –

+0

WOOOOOOOOOOOOOOOOOOO спасибо, сэр, многие люди помогли мне в решении этой проблемы, ваш первый объяснил, как я мог понять! оно работает – user2360766

Смежные вопросы