Search code examples
androidweb-servicesurlandroidhttpclient

Android post data via url


in my app i need to post data to an url to register a new user. Here is the url

http://myurl.com/user.php? email=[EMAIL]&username=[USERNAME]&password[PASS]&img_url=[IMG]

If I do that correctly I should get this message:

{"success":true,"error":null} 
or if not {"success":false,"error":"parameters"}

Can somebody guide me through this and tell me how can I do it.


Solution

  • first :
    you need to perform all network tasks in an Async thread using:

    public class PostData extends AsyncTask<String, Void, String>{
    {
            @Override
        protected String doInBackground(String... params) {
        //put all your network code here
    }
    

    Second:
    create your http request: i am assuming email, username and IMG as variables over here.

        String server ="http://myurl.com/user.php? email=[" + EMAIL + "]&username=[" + USERNAME + "]&password[" + PASS + "]&img_url=["+IMG + "]";
    
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(server);
    
                //httppost.setHeader("Accept", "application/json");
                httppost.setHeader("Accept", "application/x-www-form-urlencoded");
                //httppost.setHeader("Content-type", "application/json");
                httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");
    
    third:     
    // Add your data
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
                nameValuePairs.add(new BasicNameValuePair("JSONdata", Object));     
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
    
                try {
                    HttpResponse response =httpclient.execute(httppost);
    
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
    

    Now simple query your response handler i.e. response in this case.

    Don't forget to add INTERNET permission in your androidManifest.xml

    Hope this helps!