シンプルなログインアプリケーションを開発しています。私の JSON Web サービスはユーザー名を返します。JSON コードの形式は次のとおりです。
[{"demologin":{"username":"demoname","id":100}}]
そして、ここに私のコードがあります:
private class LongRunningGetIO extends AsyncTask <Void, Void, String> {
protected String getASCIIContentFromEntity(HttpEntity entity) throws IllegalStateException, IOException {
InputStream in = entity.getContent();
StringBuffer out = new StringBuffer();
int n = 1;
while (n>0) {
byte[] b = new byte[4096];
n = in.read(b);
if (n>0) out.append(new String(b, 0, n));
}
return out.toString();
}
protected String doInBackground(Void... params) {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
username=txtUserName.getText().toString();
password=txtPassword.getText().toString();
String url="MY URL HERE";
HttpGet httpGet = new HttpGet(url);
String text = null;
String result = null;
String webusername=null;
int webuserid;
ArrayList<String> desc=new ArrayList<String>();
try {
HttpResponse response = httpClient.execute(httpGet, localContext);
HttpEntity entity = response.getEntity();
text = getASCIIContentFromEntity(entity);
JSONArray ja = new JSONArray(text) ;
// ITERATE THROUGH AND RETRIEVE CLUB FIELDS
int n = ja.length();
for (int i = 0; i < n; i++) {
// GET INDIVIDUAL JSON OBJECT FROM JSON ARRAY
JSONObject jo = ja.getJSONObject(i);
webusername= jo.getString("demologin");
webuserid= jo.getInt("id");
}
} catch (Exception e) {
e.getLocalizedMessage();
}
return webusername;
}
protected void onPostExecute(String results) {
if (results!=null) {
String sendusername=results;
Intent inte=new Intent(Login.this,FrontPage.class);
inte.putExtra("displayusername", sendusername);
startActivity(inte);
}
else
Toast.makeText(getApplicationContext(), "Invalid user", Toast.LENGTH_LONG).show();
}
}
ここでの問題は、ユーザー名を文字列にして Web 経由で渡す方法がわからないことです。これをどのように行うことができるかについて誰にも考えがありますか?