我在 android 中创建应用程序,因为我有登录注销活动、Multilistview 活动,这些活动的数据来自其他 Web 服务。这里的问题是,当从登录活动调用 web 服务时,我收到 networkonmainthreadexception 错误,然后我在 goggle 上搜索该异常,有人说堆栈溢出在你的代码中使用 AsyncTask 用于分离线程,我在我的代码中实现了 asynctask 但没有工作。我完全混淆了如何使用 asynctask,我想在下面的代码中添加 asynctask。我提供的代码没有我所做的 asynctask。任何人都可以帮助我在调用 webservice 时如何准确地使用 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;
}
以下是实际的网络服务类
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;*/
}
提前致谢