Using HttpClient and HttpPost in Android with post parameters

后端 未结 4 1695
花落未央
花落未央 2020-11-29 02:06

I\'m writing code for an Android application that is supposed to take data, package it as Json and post it to a web server, that in turn is supposed to respond with json.

相关标签:
4条回答
  • 2020-11-29 02:21

    You can actually send it as JSON the following way:

    // Build the JSON object to pass parameters
    JSONObject jsonObj = new JSONObject();
    jsonObj.put("username", username);
    jsonObj.put("apikey", apikey);
    // Create the POST object and add the parameters
    HttpPost httpPost = new HttpPost(url);
    StringEntity entity = new StringEntity(jsonObj.toString(), HTTP.UTF_8);
    entity.setContentType("application/json");
    httpPost.setEntity(entity);
    HttpClient client = new DefaultHttpClient();
    HttpResponse response = client.execute(httpPost);
    
    0 讨论(0)
  • 2020-11-29 02:33

    have you tried doing it without the JSON object and just passed two basicnamevaluepairs? also, it might have something to do with your serversettings

    Update: this is a piece of code I use:

    InputStream is = null;
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("lastupdate", lastupdate)); 
    
    try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(connection);
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
            Log.d("HTTP", "HTTP: OK");
        } catch (Exception e) {
            Log.e("HTTP", "Error in http connection " + e.toString());
        }
    
    0 讨论(0)
  • 2020-11-29 02:34

    public class GetUsers extends AsyncTask {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
    
        }
    
        private String convertStreamToString(InputStream is) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
    
            String line = null;
            try {
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            return sb.toString();
        }
    
        public String connect()
        {
            HttpClient httpclient = new DefaultHttpClient();
    
            // Prepare a request object
            HttpPost htopost = new HttpPost("URL");
            htopost.setHeader(new BasicHeader("Authorization","Basic Og=="));
    
            try {
    
                JSONObject param = new JSONObject();
                param.put("PageSize",100);
                param.put("Userid",userId);
                param.put("CurrentPage",1);
    
                htopost.setEntity(new StringEntity(param.toString()));
    
                // Execute the request
                HttpResponse response;
    
                response = httpclient.execute(htopost);
                // Examine the response status
                // Get hold of the response entity
                HttpEntity entity = response.getEntity();
    
                if (entity != null) {
    
                    // A Simple JSON Response Read
                    InputStream instream = entity.getContent();
                    String result = convertStreamToString(instream);
    
                    // A Simple JSONObject Creation
                    json = new JSONArray(result);
    
                    // Closing the input stream will trigger connection release
                    instream.close();
                    return ""+response.getStatusLine().getStatusCode();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return null;
        }
    
        @Override
        protected String doInBackground(String... urls) {
            return connect();
        }
    
        @Override
        protected void onPostExecute(String status){
            try {
    
                if(status.equals("200"))
                {
    
                        Global.defaultMoemntLsit.clear();
    
                        for (int i = 0; i < json.length(); i++) {
                            JSONObject ojb = json.getJSONObject(i);
                            UserMomentModel u = new UserMomentModel();
                            u.setId(ojb.getString("Name"));
                            u.setUserId(ojb.getString("ID"));
    
    
                            Global.defaultMoemntLsit.add(u);
                        }
    
    
    
    
                                userAdapter = new UserAdapter(getActivity(), Global.defaultMoemntLsit);
                                recycleView.setAdapter(userMomentAdapter);
                                recycleView.setLayoutManager(mLayoutManager);
               }
    
    
    
            }
            catch (Exception e)
            {
                e.printStackTrace();
    
            }
        }
    }
    
    0 讨论(0)
  • 2020-11-29 02:39

    I've just checked and i have the same code as you and it works perferctly. The only difference is how i fill my List for the params :

    I use a : ArrayList<BasicNameValuePair> params

    and fill it this way :

     params.add(new BasicNameValuePair("apikey", apikey);
    

    I do not use any JSONObject to send params to the webservices.

    Are you obliged to use the JSONObject ?

    0 讨论(0)
提交回复
热议问题