onPostExecute在Android 4.2.2上获得null结果

时间:2016-07-28 07:33:23

标签: android

我的代码完全适用于Android的上层版本。但每当我试图在Jelly Bean 4.2.2上运行该程序时,它就无法运行。我的最低SDK版本是:14,目标SDK版本是:22

我的代码是:

private class AuthAsync extends AsyncTask<String, Integer, String> {

    @Override
    protected void onPreExecute() {
    }

    @Override
    protected String doInBackground(String... params) {

        HttpGet request = new HttpGet(params[0] + params[1]);
        ResponseHandler<String> responseHandler = new    BasicResponseHandler();
        String responseTxt = null;
        HttpClient client = PaywellServices.getTrustedHttpClient();
        try {
            responseTxt = client.execute(request, responseHandler);
        } catch (ClientProtocolException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return responseTxt;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        try {
            Log.e("Log","Try");
            Log.e("Result",result);
            if (result != null && result.contains("@")) {
                String splitedArray[] = result.split("@@@");
            }
       } catch (ArrayIndexOutOfBoundsException e) {
            Log.e("Log","Catch");
            e.printStackTrace();
       }
    }
}

2 个答案:

答案 0 :(得分:0)

从技术上讲,从doInBackground返回的结果将传递给onPostExecute
因此 onPostExecute()上的结果输入参数与 doInBackground()中返回的字符串相同,为 responseTxt < / p>

乍一看,我特别想到了这段代码:

try {
    responseTxt = client.execute(request, responseHandler);
} catch (ClientProtocolException ex) {
    ex.printStackTrace();
} catch (IOException ex) {
    ex.printStackTrace();
}
return responseTxt;

对于调试,请在返回之前检查 responseTxt 的值(或将其打印到控制台)。
我的线索是,在调用方法时, PayWell 客户端的结果返回null:

responseTxt = client.execute(request, responseHandler);

答案 1 :(得分:0)

我的问题是,我的手机正在收到Google的身份验证错误。出于这个原因,我无法得到预期的回应。解决了Google身份验证问题后,我的代码运行正常。