J'ai une application où j'essaie d'envoyer des données à un webservice en utilisant un post http. Les données de l'utilisateur sont un mélange de chaînes de caractères, d'int et de doubles. Dans l'application, toutes les données sont représentées comme des chaînes de caractères, car lorsque j'utilise AsyncTask pour exécuter l'appel réseau (afin qu'il ne soit pas sur le thread principal), le tableau des paramètres est de type String.
Le problème que j'ai est que le serveur attend parfois un int. Par exemple, compID est un int que le serveur attend. Lorsque j'utilise le post http, j'utilise NameValuePair. Celle-ci n'accepte que les chaînes de caractères. Comment puis-je passer un int ou un double à la fonction http post ?
Dans mon activité.
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
.
Ma méthode de post
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
}
}
Dans ma méthode post, certaines des valeurs sont définies comme nulles pour le moment. Ce que je voudrais savoir, c'est comment faire en sorte que compID devienne un int dans la paire NameValuePair. compID arrive de l'activité sous la forme d'un String mais le serveur s'attend à un int.