一个类中的Android post方法

一个类中的Android post方法,android,Android,嗨,我在每一个活动中都有这个post方法。我怎样才能把这篇文章放到一个类中,这样我就可以知道是否有错误了?否则,我将把错误消息解析为json private boolean login(String username, String password) { TextView err = (TextView) findViewById(R.id.err); boolean status = false; String postData = "{\"Password\":\"

嗨,我在每一个活动中都有这个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());
    }

创建一个util类。并将此方法设置为静态

public static boolean login(String username, String password,TextView err){}
如果需要,还可以将其传递给上下文。然后根据需要调用此方法

util.login( username,  password,errorTextView);

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

  • 创建具有类似receivedPostStatus(布尔)方法的接口(或基类)
  • 将实现接口(或基类的子类)的内容传递到AsyncTask子类中,该子类在其doInBackground()中执行HTTP POST
  • 然后在AsyncTask.onPostExecute中,调用myImplementer.receivedPostStatus(状态)

  • 我不确定你在问什么——要么把它放在一个超类中,要么创建一个具有该方法的实用程序类?因此,如果我传入textview,错误消息将显示在我的活动中?它会返回false吗?如果在后台线程中使用此方法,则不能使用textview。只能在uithread上更新textview。使用AsyncTask并在执行后返回字符串并更新textview。