java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-23错误

时间:2017-04-26 15:37:15

标签: java

我编写了一个Java程序来从tumblr获取JSON列表。它运作良好5-6个月,但现在出错了。我试图从前面删除22个无用的字符,从结尾删除1个分号。

String input = ("good.tumblr.com");

String urlContent = urlReader("http://"+input+"/api/read/json?type=photo&num=0&start=0" );

urlContent=urlContent.substring(22,urlContent.length()-1);

但我得到了

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -23
    at java.lang.String.substring(String.java:1967)
    at main.main(main.java:27)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

这是我将获得的字符串

"  var tumblr_api_read = {"tumblelog":{"title":"","description":"Live Well. Do Good.","name":"good","timezone":"US\/Pacific","cname":false,"feeds":[]},"posts-start":0,"posts-total":2184,"posts-type":"photo","posts":[]};    "

https://github.com/Shiva7071007/tumloader_java/tree/master/src

链接到整个程序。工作在乞讨但它现在不起作用。代码没有优化,因为这是我的第一个java代码。

2 个答案:

答案 0 :(得分:0)

看起来字符串返回为空或短于22个字符。在修改之前,您需要验证原始字符串

答案 1 :(得分:0)

看起来tumblr已移至https。因此,不是通过JSON结构获取正文,而是仅使用重定向信息获取标题,使String urlContent保持空字符串"",您不能从{{1}开始子字符串}直到22

要解决此问题,只需将您的请求从length()-1更改为http即可。