服务器通信问题

时间:2014-07-03 11:06:41

标签: android performance

我有以下要求:

I>一个AsyncTask,它获取Paginated数据,比如100页,每个100个项目。

II>一个意图服务,它也可以获取Paginated数据,比如100页,每个包含100个项目。

我遇到以下问题:

我在HttpCommunication类中使用以下方法getResponseFromServerGET()与服务器进行通信。

public String getResponseFromServerGET(String serviceUrl,
            HashMap<String, String> headerInfo) {
        String responseStr = "";
            try {
            HttpParams httpParameters = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParameters, 30000);
            HttpConnectionParams.setSoTimeout(httpParameters, 30000);

            HttpClient mHttpClient = new DefaultHttpClient(httpParameters);
            HttpGet mHttpGet = new HttpGet(serviceUrl);
            // Get the key value from the HashMap
            if (headerInfo != null) {
                for (String iterator : headerInfo.keySet()) {
                    mHttpGet.addHeader((String) iterator,
                            (String) headerInfo.get((String) iterator));
                }
            }
            HttpResponse mResponse = mHttpClient.execute(mHttpGet);
            HttpEntity mEntity = mResponse.getEntity();

            if (mEntity != null) {
                InputStream inputStream = mEntity.getContent();
                responseStr = Utils.convertStreamToString(inputStream);
                inputStream.close();
            }
        } catch (ClientProtocolException e) {
        } catch (IllegalStateException e) {
        } catch (IOException e) {
        }
        return responseStr;
    }

    public static String convertStreamToString(InputStream is) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
            String line = null;
            try {
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
            } catch (IOException e) {
            }
            return sb.toString();
   }

我创建了两个实例&amp;从两个不同的类中调用以下方法。 AsyncTask&amp;之间没有任何联系。 IntentService。

HttpCommunication comm1 = new HttpCommunication();
comm1.getResponseFromServerGET(); // Passing the necessary params in IntentService


HttpCommunication comm2 = new HttpCommunication();
comm2.getResponseFromServerGET(); // Passing the necessary params in AsyncTask

获取响应后,通过调用另一个类ParseResponse中的相​​应方法,从IntentService和AsyncTask解析响应。

在解析从IntentService获取的响应时,有时会抛出以下异常,

&#34; org.json.JSONException:未终止的对象&#34;

有时并非总是会出现此问题。 这可能是一个HTTP问题或特别是IntentService问题,由于AsyncTask&amp; IntentService,服务器的响应(JSON)是否已损坏?

我已经检查了每个页面的服务器日志响应,但没有发现任何响应(JSON)被发送的异常。

任何建议/提示都将受到赞赏。

0 个答案:

没有答案