当前位置: 首页 > 面试题库 >

字符串过长会被截断

罗甫
2023-03-14
问题内容

我正在尝试从服务器获取JSON响应,并且当字符串长度达到约5525个字符时,响应字符串似乎总是被截断。

HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost(URL);
ResponseHandler<String> responseHandler= new BasicResponseHandler();
String testResponse = httpClient.execute(post, responseHandler);

我还通过使用HttpEntity并读取响应流进行了尝试。但这也会在大约该长度处截断字符串。

            HttpClient httpClient = new DefaultHttpClient();
            HttpPost post = new HttpPost(URL);
//          HttpGet get = new HttpGet(URL);

            HttpResponse response = null;
            HttpEntity entity = null;
            InputStream inputStream = null;
            BufferedReader reader = null;
            String result = "";
            try {
                response = (HttpResponse)httpClient.execute(post);
                entity = response.getEntity();
                if(entity != null){
                    inputStream = entity.getContent();
                }
                reader = new BufferedReader(new InputStreamReader(inputStream), 8000);
                StringBuffer builder = new StringBuffer("");
                String line = reader.readLine();
                while(line != null){
                    Log.v(tag, "int max::::::::: "+Integer.MAX_VALUE);
                    Log.v(tag, "LINE::::::::: "+line+reader.toString());
                    Log.v(tag, "reader::::::::: "+reader.toString());
                    builder.append(line+"\n");
                    line = reader.readLine();
                }
                inputStream.close();
                result = builder.toString();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally{
                if(inputStream != null){
                    try{
                        inputStream.close();
                    }catch(IOException e){
                        e.printStackTrace();
                    }
                }
            }

请让我知道如何处理此问题。创建此文章时,我将其作为参考。
http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple-restful-
client-at-
android/

谢谢。


问题答案:

首先感谢大家的答复。

我只是发现问题不在于我的代码,而在于logcat显示的行数。问题是我的json回复格式有问题,我的解析代码吐了一个错误。所以我开始尝试通过在logcat中打印响应json字符串来调试它。这总是被截断,而我一直猜到现在服务器本身的响应也被截断了。

因此,今天我开始使用响应字符串构建器,必须编写有趣的代码片段来对字符进行计数并在期望的位置检测字符,然后发现响应已完全返回。我还对其他较大的字符串测试了我的代码,发现logcat限制了它显示的字符串的长度,或者至少看起来如此。这就是为什么我的回复显示为截断的字符串的原因,我认为这是我的代码存在的问题。

因此,由于代码较早,因此工作正常,唯一的问题是logcat无法显示完整的字符串。但这并没有打扰我[至少现在]。

再次感谢大家的帮助。



 类似资料:
  • 问题内容: 如何在Python中将字符串截断为75个字符? 这是用JavaScript完成的方式: 问题答案:

  • 问题内容: 有没有人比显而易见的解决方案/库更复杂的解决方案/库,用于使用JavaScript截断字符串并在末尾添加省略号: 问题答案: 现在您可以执行以下操作: 如果“更复杂”是指在字符串的最后一个单词边界处截断,那么这可能就是您想要的: 现在您可以执行以下操作: 如果您不想扩展本机对象,则可以使用:

  • 目前再做一个接口请求,postman已经调试成功,但是用java模拟的时候出现一个奇怪的问题. 两张图片base64加密后的字符串put进一个jasonobject中.本来很长的字符串被截断成993(显示1000是因为有个key的长度)长度.导致请求失败.想问问有大佬知道是为什么吗?png](/img/bVdba5a) 在网上查了好久没有相关的错误..

  • 问题内容: 有没有什么好方法可以用纯HTML和CSS截断文本,以使动态内容可以适合于固定宽度和高度的布局? 我一直在通过 逻辑 宽度(即盲目猜测的字符数)来截断服务器端,但是由于“w”比“i”宽,所以这往往不是最佳选择,并且还要求我重新猜测(并不断调整)每个固定宽度的字符数。理想情况下,截断将在浏览器中发生,该浏览器知道渲染文本的 _物理_宽度。 我发现IE的属性完全可以满足我的要求,但是我需要它

  • 我正在尝试用AES(“AES/CBC/PKCS7Padding”)用密码加密和解密纯文本。 由KeyGenerator制作secretKey,并用它加密/解密。这一开始效果很好。 但是,如果纯文本是一个大字符串(如183244个字符),则解密其中的一部分,而不是全部。 “part of it”表示 如果纯文本为“abcdefghijklmn”,则解密文本为“abcdefgh” (这是一个示例。实际

  • substr key start end 返回截取过的key的字符串值,注意并不修改key的值。下标是从0开始的