0

致力于从用户那里获取输入EditText并将其格式化以进入 url $_GET,以便我可以将其保存到 mysql 数据库中。截至目前,该应用程序只会在每个EditText字段中存储第一个值。

如果有人能告诉我我做错了什么,那就太好了!

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
        }
    }
}
4

1 回答 1

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);
于 2013-05-21T04:27:07.257 回答