android how to send int and double as namevaluepair as http post

13,570

You can do something like this:

nameValuePairs.add(new BasicNameValuePair("TXType",Integer.toString (2)));

TxType is the key and 2 is the value

Share:
13,570
turtleboy
Author by

turtleboy

linkedin

Updated on June 04, 2022

Comments

  • turtleboy
    turtleboy almost 2 years

    I've an app where i am trying to send data to a webservice using a http post. The user data is a mixture of strings int and doubles. In the app all are represented as Strings as when i use AsyncTask to run the network call, (so that it's not on the main thread), the params array is of type String.

    The problem i have is that the server expects an int sometimes. eg compID is an int that the server expects. When using the http post, i use NameValuePair. This will only accept strings. How can i pass an int or a double to the http post?

    In my activity.

    String[] params = new String[]{tagCompany, tagId, tagPerson, OUT,
                                    null, null,null, null, null, null}; 
                            AsyncPostData apd = new AsyncPostData();
                            apd.execute(params);
    
    
    
    
    
    private class AsyncPostData extends AsyncTask<String, Void, Void> {
    
            ProgressDialog progressDialog;
    
            @Override
            protected void onPreExecute()
            {
                progressDialog= ProgressDialog.show(NfcscannerActivity.this, 
                        "Connecting to Server"," Posting data...", true);            
            };  
    
    
            @Override
            protected Void doInBackground(String... params) {
    
                nfcscannerapplication.loginWebservice.postData(params[0], params[1], params[2], params[3], params[4],
                        params[5], params[6], params[7], params[8], params[9]);
                return null;
            }
    
             @Override
                protected void onPostExecute(Void result)
                {
                 super.onPostExecute(result);
                    if(progressDialog != null)
                    progressDialog.dismiss();
    
                }
        }//end of AsyncPostData 
    

    .

    My post method

    public void postData( String compID, String tagID, String clientID, String carerID, 
                String phoneScanned, String phoneSent, String TXType, String phoneType, String latitude, String longitude) {
            // Create a new HttpClient and Post Header
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://cfweb.yourofficeanywhere.co.uk:88/roadrunner.asmx/PostTransaction");
    
    
            try {
                // Add your data
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                nameValuePairs.add(new BasicNameValuePair("CompanyID", compID));
                nameValuePairs.add(new BasicNameValuePair("TagID", tagID));
                nameValuePairs.add(new BasicNameValuePair("ClientID", clientID));
                nameValuePairs.add(new BasicNameValuePair("CarerID", carerID));
                nameValuePairs.add(new BasicNameValuePair("PhoneScanned", "2010-10-16 16:30 000"));
                nameValuePairs.add(new BasicNameValuePair("PhoneSent", "2010-10-16 16:32 000"));
                nameValuePairs.add(new BasicNameValuePair("TXType", "2"));
                nameValuePairs.add(new BasicNameValuePair("PhoneType", "2"));
                nameValuePairs.add(new BasicNameValuePair("Latitude", latitude));
                nameValuePairs.add(new BasicNameValuePair("Longitude", longitude));
    
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    
                // Execute HTTP Post Request
                HttpResponse response = httpclient.execute(httppost);
    
                Log.e(TAG, "response of post = " + response.toString());
    
    
    
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
            } catch (IOException e) {
                // TODO Auto-generated catch block
            }
        } 
    

    In my post method some of the values are set to null for now. What i would like to know is how to make compID an int in the NameValuePair. compID comes over from the activity as a String but the server expects an int.

  • turtleboy
    turtleboy over 11 years
    Hi, this is the problem i have. if i go nameValuePairs.add(new BasicNameValuePair("CompanyID", Integer.parseInt(compID))); Eclipse complains that String, int is undefined for NameValuePair
  • Agata
    Agata over 11 years
    Try nameValuePairs.add(new BasicNameValuePair("CompanyID", ((int)Integer.parseInt(compID))));
  • Astrorvald
    Astrorvald over 11 years
    The constructor of BasicNameValuePair is (String, String), so it won't work.
  • Agata
    Agata over 11 years
    So... your problem is that server accepts only int, but from application you can only send String?
  • turtleboy
    turtleboy over 11 years
    Hi The variable compID is a String. NameValuePair will only accept <String,String> not <String, int>, but the server expects <String, int>
  • kittu88
    kittu88 over 11 years
    you can change the datatype in the server, if it is possible. I guess that will be less tedious.
  • turtleboy
    turtleboy over 11 years
    yes Astrorvald has got it right. The constructor is String String. I need to send String, int to server. So is there another data structure other than NameValePair that can handle this?
  • turtleboy
    turtleboy over 11 years
    I've had a chat with director and he says we might be able to change what the server expects. like you say might be easier:)
  • turtleboy
    turtleboy over 11 years
    @Astrorvald Hi do you want to put that as an answer and i'll accept it