0

嗨,我在每个活动中都有这个 post 方法。我怎样才能把这篇文章放到一个类中,这样如果有错误我会知道?否则,我会将错误消息解析为 json。

private boolean login(String username, String password) {
    TextView err = (TextView) findViewById(R.id.err);
    boolean status = false;
    String postData = "{\"Password\":\"" + password + "\",\"UserName\":\"" + username + "\"}";
    try {
        String domain = getString(R.string.domain);
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response;
        HttpPost httppost = new HttpPost(domain + "login");
        StringEntity se = new StringEntity(postData.toString(), "utf-8");
        se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
        httppost.setEntity(se);
        httppost.setHeader("Accept", "application/json");
        httppost.setHeader("Content-type", "application/json");
        response = httpclient.execute(httppost);
        if (response != null) {
            HttpEntity r_entity = response.getEntity();
            String json = EntityUtils.toString(r_entity);
            JSONObject jsonobj = new JSONObject(json);
            status = jsonobj.getBoolean("result"); 
        }


    } catch (Exception e) {
        err.setText(e.getLocalizedMessage());
    }
4

2 回答 2

0

制作一个实用程序类。并使此方法静态

public static boolean login(String username, String password,TextView err){}

如果需要,您也可以将其传递给上下文。然后根据需要调用此方法

util.login( username,  password,errorTextView);
于 2012-04-25T19:32:49.380 回答
0

如果您可以同步执行并返回状态。但是,您的问题似乎是如何异步获取状态。在这种情况下,您可以:

  1. 创建一个接口(或基类),它具有像 receivedPostStatus(boolean) 这样的方法
  2. 将实现接口(或从基类继承)的东西传递到 AsyncTask 子类中,该子类在其 doInBackground() 中执行 HTTP POST
  3. 然后在 AsyncTask.onPostExecute 中,调用 myImplementer.receivedPostStatus(status)
于 2012-04-25T19:34:56.913 回答