程序的小片段从一天开始挑战我,
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import com.rometools.rome.io.FeedException;
public class Test {
public static void main(String[] args) throws IllegalArgumentException, FeedException, IOException {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputStream openStream = new URL("http://www.livemint.com/rss/money").openStream();
Document doc = db.parse(openStream);
System.out.println(doc.getDocumentURI());
} catch (Exception e) {
e.printStackTrace();
}
}
}
所有这些实验都是从rome工具解析器代码开始的,这在不同的方法中也给了我相同的错误。
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(url));
feed.getEntries();
在创建新的xml Reader时引发了异常,因此我以不同的方式编写了一个测试程序。现在两者都抛出相同的错误,
[致命错误]:1:1:文件过早结束。
我必须从网址获取xml响应,但无法执行。
答案 0 :(得分:0)
从Java代码向此URL发送GET请求时说:
def index
@articles = Article.all
if params[:search]
@articles = Article.search(params[:search]).order("created_at DESC")
else
@articles = Article.all.order("created_at DESC")
end
end
由于请求失败,因此响应中不存在XML。请检查API,看看是否需要在HTTP请求中包含任何其他参数。
我使用以下代码连接到URL:
Sending 'GET' request to URL : http://www.livemint.com/rss/money
Response Code : 301
答案 1 :(得分:0)
我相信这是因为服务器试图将您重定向为使用https
this而不是http
,而使用HttpURLConnection
。
更改您的URL以使用https
将解决此问题。