0

我正在尝试使当前的 4.0 应用程序与 2.1 android 设备兼容。我曾经在调用 HttpResponse 时遇到异常,但我不知道为什么。我所知道的是,对于 API 8,有两行我需要注释掉以避免错误并进行更多调整,我很高兴。我不完全确定这些行是做什么的,或者它们是否是问题的原因(因为我刚刚修改了一些教程中的代码片段),但代码现在正在工作......这些是我注释掉的行:

 /*StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
   StrictMode.setThreadPolicy(policy);
   */

但在调试模式下。一旦我尝试了发布模式,我就会到达应用程序之前冻结的同一个地方......我放置了一些 Toast 消息作为调试消息来检查发布模式,但它们没有显示(可能是因为我有一个 progressDialog 正在进行)。

主要问题是在调试模式下它现在工作正常(在 2 个不同的设备上测试),但发布模式一直有问题(我什至无法调试它)。

这是我认为我的应用程序失败的代码。在调试模式下,它曾经在调用 HttpResponse 时失败。有任何想法吗?

public String Send(String jsonString, String url, Context ctxt)
{
    try{

        System.out.println(jsonString);

        HttpPost request = new HttpPost(url);
        request.setHeader("Accept", "text/xml");
        request.setHeader("Host", "www.my-host.com" );
        request.setHeader("Content-type", "application/json");
        StringEntity stringEnt = new StringEntity(jsonString); 
        stringEnt.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
        request.setEntity(stringEnt);

        //instantiates httpclient to make request
        DefaultHttpClient httpclient = new DefaultHttpClient();

        HttpResponse response = httpclient.execute(request);
        HttpEntity responseEntity = response.getEntity();       

        //Obtenemos el xml de la respuesta
        String responseXML = EntityUtils.toString(responseEntity);
        return responseXML;
    }
    catch(Exception e)
    {
        Toast.makeText(ctxt, "Error registering user", Toast.LENGTH_SHORT).show();
        Log.i("login", "" + e.getMessage());
        return "error";
    }


}

}

谢谢

4

1 回答 1

1

调用 HttpResponse 时应使用 Asynctask,因为 Android 4.0 及更高版本不会让您中断活动的主线程。

于 2013-04-26T19:16:28.033 回答