2 ssummeraw ssummeraw 于 2013.06.09 11:04 提问

从 android 应用程序响应时间发送 php 查询到服务器

我想在数据库中放入一个entry。用的下面的代码:

String url = String.format("http://xxxxxxx/xxx/index.php?home=yes&pid=%s", pid);
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
    try {
        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        String response = httpclient.execute(httppost, responseHandler);
         Log.e("abc", response);
        return response;
        } catch (ClientProtocolException es) 
        {   
            Log.e("x" , es.getMessage());
            return "";
        } catch (IOException e) 
        {
            Log.e("aasx" , e.getMessage());
            return "";
        }

这段代码能正常运行,现在当有网络连接的时候,代码就会困在httpclient.execute(httppost, responseHandler); 大约俩分钟。

有什么方法可以实现检查几秒钟后,如果没有反应的就会就catch the exceptions?

1个回答

Jave_
Jave_   2013.06.09 12:04
已采纳
   HttpParams params =new BasicHttpParams();
   // 设置一些基本参数
   HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
   HttpProtocolParams.setContentCharset(params,CHARSET);
   HttpProtocolParams.setUseExpectContinue(params, true);
   /* 从连接池中取连接的超时时间 */
   ConnManagerParams.setTimeout(params, 1000);
   /* 连接超时 */
   HttpConnectionParams.setConnectionTimeout(params, 2000);
   /* 请求超时 */
   HttpConnectionParams.setSoTimeout(params, 4000);
   // 设置我们的HttpClient支持HTTP和HTTPS两种模式
   SchemeRegistry schReg =new SchemeRegistry();
   schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        schReg.register(new Scheme("https", SSLSocketFactory
                .getSocketFactory(), 443));

   // 使用线程安全的连接管理来创建HttpClient
   ClientConnectionManager conMgr =new ThreadSafeClientConnManager(params, schReg);
   HttpClient httpclient=new DefaultHttpClient(conMgr, params);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!