httpポストを使用してWebサービスにデータを送信しようとしているアプリがあります。ユーザー データは文字列 int と double の混合です。アプリでは、AsyncTask を使用してネットワーク呼び出しを実行するときのように (メイン スレッド上にないように)、すべてが文字列として表されます。params 配列は文字列型です。
私が抱えている問題は、サーバーが時々 int を期待することです。たとえば、compID は、サーバーが期待する int です。http 投稿を使用する場合は、NameValuePair を使用します。これは文字列のみを受け入れます。http ポストに int または double を渡すにはどうすればよいですか?
私の活動で。
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
.
私の投稿方法
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
}
}
私の post メソッドでは、値の一部が今のところ null に設定されています。私が知りたいのは、CompID を NameValuePair で int にする方法です。compID はアクティビティから String として取得されますが、サーバーは int を想定しています。