Android发出http请求并忽略响应

时间:2014-12-11 12:03:34

标签: android androidhttpclient

我正在开发一个将一些Logs发送到数据库的程序。 作为日志,主要的想法是尽可能多地保存信息,如果我存储日志的服务器关闭,我想避免使用该部分。我要做的是发出一个http请求并完全忽略服务器响应,无论是在线还是离线都没关系。到目前为止我所做的是为我的请求设置超时但这并不能解决我的问题。这是我的代码:

public synchronized void LOG_sendERROR(String token, String channelnumber, String type)
{       
    HttpResponse response = null;

    HttpParams httpParameters = new BasicHttpParams();
    int timeout = 3000;
    HttpConnectionParams.setConnectionTimeout(httpParameters,timeout);
    int timeoutsocket = 5000;
    HttpConnectionParams.setSoTimeout(httpParameters, timeoutsocket);
    DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters);


    try
    {                   
        if (ep.getString("username", "").length() == 0)
            return ;

        String url = Server.Log_Server + "/LOG_CHANNEL_LOGS.aspx?params=1";

        log.i("LOGS", url);

        HttpGet c = new HttpGet(url);

        response = httpclient.execute(c); 

        return ;

    }
    catch (Exception e)
    {
        e.printStackTrace();

        try
        {
            if (response != null)
                response.getEntity().consumeContent();
        }
        catch (Exception f)
        {

        }

        return ;
    }
}

如果服务器关闭,我的应用程序会停留3秒钟。我想发送日志,客户端应用程序知道服务器是否保存了客户端发送的日志并不重要。如何发出http请求并忽略响应?

1 个答案:

答案 0 :(得分:0)

在我尝试了很多方法之后,最好的方法是执行并行任务。这样客户端就不会忽略服务器的响应,但至少应用程序将正常运行。

private Runnable LOG_CHANNEL_LOGS = new Runnable() 
{
    public void run() 
    {
        new LOG_CHANNEL_LOGS().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);   
    }
};