我编写了一个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代码。
答案 0 :(得分:0)
看起来字符串返回为空或短于22个字符。在修改之前,您需要验证原始字符串
答案 1 :(得分:0)
看起来tumblr
已移至https
。因此,不是通过JSON结构获取正文,而是仅使用重定向信息获取标题,使String urlContent
保持空字符串""
,您不能从{{1}开始子字符串}直到22
。
要解决此问题,只需将您的请求从length()-1
更改为http
即可。