ログインログアウトアクティビティ、残りのWebサービスからのデータであるマルチリストビューアクティビティがあるという点で、Androidでアプリを作成しています。ここでの問題は、ログイン アクティビティから Web サービスを呼び出すときにエラー networkonmainthreadexception が発生し、その例外についてゴーグルで検索したことです。私は asynctask の使用方法を完全に混乱させており、次のコードに asynctask を追加したいと考えています。私が行った asynctask なしでコードを提供します。Webサービスを呼び出すときにasynctaskを正確に使用する方法を教えてください。
以下は、編集テキスト呼び出し関数からのデータの取得です
UserFunctions userFun = new UserFunctions();
if ((username.trim().length() > 0)&&(userpsw.trim().length() > 0)) {
JSONObject json = userFun.loginUser(username, userpsw);
.
.
.
以下は関数クラスです
public JSONObject loginUser(String userEmail, String userPsw) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", login_tag));
params.add(new BasicNameValuePair("email", userEmail));
params.add(new BasicNameValuePair("password", userPsw));
JSONObject json = jsonParser.getJsondataFromUrl(params);
//Log.d("tag", json.toString());
return json;
}
以下は実際のWebサービスクラスです
public void getJsondataFromUrl(List<NameValuePair> params) {
{
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResp = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResp.getEntity();
inStream = httpEntity.getContent();
//Log.d(tag, inStream.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader bufferReader = new BufferedReader(new InputStreamReader
(inStream, "iso-8859-1"), 8);
StringBuilder strBuilder = new StringBuilder();
String line = null;
while ((line = bufferReader.readLine()) != null) {
strBuilder.append(line + "n");
}
inStream.close();
json = strBuilder.toString();
//Log.d("JSON", json);
} catch (Exception e) {
e.printStackTrace();
}
// try parse the string to a JSON object
try {
jsonObj = new JSONObject(json);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObj;*/
}
前もって感謝します