簡體   English   中英

StringBuilder無法追加字符串

[英]StringBuilder cannot append string

我正在使用DefaultHttpClient從URL發出GET請求。 請參見下面的代碼。

您可以看到,如果使用Log.i("result", l)記錄結果,則在循環結束時,我可以看到響應的完整數據,但是如果使用htmlResult = sb.toString(); 我無法獲取或查看所有數據,可能只有一半的響應。

怎么了 感謝您的意見。

編輯:我發布了我的代碼,每個人都可以幫助我:

public class DetailParser {
    HTTPAsyncRequest _asyncRequest;
    CompletionHandler _completion;
    private String _currentURL;
    private static DetailParser _instance;
    public GadgetItem _currentItem;
    static InputStream _inputStream = null;

    public static DetailParser getInstance()
    {
        if(_instance == null)
            _instance = new DetailParser();
        return _instance;
    }
    public class HTTPAsyncRequest extends AsyncTask<String, Integer, Response>
    {

        @Override
        protected Response doInBackground(String... params) {
            _currentURL = params[0];
            String result = getData(params[0]);
            Response response = new Response(result, params[0]);
            return response;
        }
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
        }
        @Override
        protected void onPostExecute(Response response) {
            if(response == null)
                return;
            if(!_currentURL.equals(response.urlRequest))
            {
                super.onPostExecute(response);
            }
            else
            {
                // TODO Auto-generated method stub
                parseGadgetItem(response.xmlResult);
                if(_completion != null)
                    _completion.getDescriptionDone(_currentItem);
                super.onPostExecute(response);
            }
        }
        public String getData(String url)
        {
private String _resultHTML = null;
            StringBuilder builder = new StringBuilder();
            BufferedReader reader = null;
            try {
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpGet httpPost = new HttpGet(url);    
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                _inputStream = httpEntity.getContent();
                reader = new BufferedReader(new InputStreamReader(_inputStream, "UTF-8"), 8);
                    StringBuilder sb = new StringBuilder();
                    String l = "";
                    String nl = System.getProperty("line.separator");
                    while ((l = reader.readLine()) != null) {
                        sb.append(l + nl);
//                      Log.i("result", l);
//                      htmlResult += l + nl;
                    }

                    _resultHTML = sb.toString();
//                  Log.i("Result", _resultHTML);
//              htmlResult = EntityUtils.toString(httpEntity);

            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (reader != null) {
                try {
                    reader.close();
                } catch (Exception e) {
                    Log.e("GetMethodEx", e.getMessage());
                }
            }
            return _resultHTML;
        }
    }
    // constructor
    public DetailParser() {

    }

    private void abortRequest()
    {
        if(_asyncRequest != null)
            _asyncRequest.cancel(true);
    }

    public void getGadgetDescription(GadgetItem item, final CompletionHandler completion)
    {
        _currentItem = item;
        _completion = completion;
        abortRequest();
        _asyncRequest = (HTTPAsyncRequest) new HTTPAsyncRequest().execute(item.gadget_link,null,null);
    }

     public void parseGadgetItem(String html) {
// HERE : data is missing
            if (xml == null)
                return;
            try {
                Document doc = Jsoup.parse(html);
                Elements e = doc.getElementsByClass("thecontent entry-content");

// 
            } catch (Exception e) {
            }
        }
}

嘗試這個:

在全球范圍內聲明

static InputStream re = null;
private String result = null;

現在在您的課程中使用此代碼

DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);

HttpResponse response1;

try {
    response1 = client.execute(httpGet);
    Log.e("Refresh is: ", response1.toString());
    HttpEntity entity = response1.getEntity();

    re=entity.getContent();
    BufferedReader reader = new BufferedReader(
        new InputStreamReader(re, "UTF-8"), 8);

    StringBuilder sb = new StringBuilder();

    String line = null;
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    String result= sb.toString();
    System.out.println(result);


} catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
     e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM