0

I'm trying to send post variables through UrlEncoding from android to php page which is working for me if i send one variable only. So how to encode more than one variable, i've tried some on my own.

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

This is doing the job but only first variable is accessible through php side.

2 Answers 2

2

You're only able to access the first variable because, you are not appending each parameter with &. You could use this method to get a parameter string.

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

You can get a parameter string like this:

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);
Sign up to request clarification or add additional context in comments.

Comments

0

Try this:

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.