Правильно обрабатывать ответ при использовании HttpClient

Я разрабатываю приложение для Android, в котором я использую структуру Zend для создания API. Я вызываю API, используя этот код. Это код в классе IntentService.

    HttpClient client = new DefaultHttpClient();

        // Set timeout values
    client.getParams().setIntParameter(
                CoreConnectionPNames.CONNECTION_TIMEOUT,
                CONNECTION_TIMEOUT * 1000);
    client.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT,
                SOCKET_TIMEOUT * 1000);try {

            HttpUriRequest httpRequest = null;
            HttpResponse response = null;

            // Set HttpUriRequest based on type of HTTP method
            if (method.equals("GET")) {

                HttpGet request = new HttpGet(url);
                httpRequest = request;

            } 

            // Get response
            response = client.execute(httpRequest);
            BufferedReader rd = new BufferedReader(new InputStreamReader(
                    response.getEntity().getContent()));

            // Read the response
            String responseString = readResponseContent(rd);

            Log.e(TAG, "length of response is " + responseString.length());

            Log.e(TAG, "response :" + responseString);
            // If status code 200 then send response

        }catch (Exception e) {
            MyLog.e(TAG, "Exception while connecting to URL : " + url);
            e.printStackTrace();
            sendUnknownError();

        } 

Теперь проблема в том, что я создал один API, ответ которого очень длинный. Но после получения этого я отправляю трансляцию туда, где она называется. Он возвращает ответ частями. Поэтому, когда он получает ответ в первый раз, но на самом деле ответ еще не завершен. Так что это вызывает некоторые проблемы позже. Итак, как я могу дождаться полного ответа перед вызовом широковещательного метода.

Поэтому мне нужно дождаться полного ответа. Как я могу это сделать?


person keen    schedule 18.04.2014    source источник
comment
вам нужно увеличить время ожидания подключения и значение времени сокета с 1 секунды до минимум 15 секунд, затем попробуйте   -  person Usman Kurd    schedule 18.04.2014
comment
Но это уже 20 секунд. Вы видите CONNECTION_TIMEOUT и SOCKET_TIMEOUT. Значение обеих переменных равно 20. Таким образом, это будет 20 секунд.   -  person keen    schedule 18.04.2014
comment
почему проголосовали за закрытие. Пожалуйста, укажите причину.   -  person keen    schedule 18.04.2014