我目前正在做一个项目,我必须从代谢物数据库 PubChem 请求数据。我正在使用 Apache 的 HttpClient。我正在执行以下操作:
HttpClient httpclient = new DefaultHttpClient();
HttpGet pubChemRequest = new HttpGet("http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid="
+ cid + "&disopt=SaveXML");
pubChemRequest.getAllHeaders();
System.out.println(pubChemRequest);
HttpResponse response = null;
response = httpclient.execute(pubChemRequest);
HttpEntity entity = response.getEntity();
pubChemInchi = EntityUtils.toString(entity);
问题是这段代码流式传输整个 XML 文件:
<?xml version="1.0"?>
<PC-Compound
xmlns="http://www.ncbi.nlm.nih.gov"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://www.ncbi.nlm.nih.gov ftp://ftp.ncbi.nlm.nih.gov/pubchem/specifications/pubchem.xsd">
等等
我想要的是我可以请求,例如,PubChem ID,它将粘贴与该 ID 对应的值。我发现这可以使用本机 Java 方法完成,但我需要为此使用 HttpClient。使用本机 Java,可以这样完成:
cid = 5282253
reader = new PCCompoundXMLReader(
new URL("http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid=" + cid + "&disopt=SaveXML").newInputStream())
mol = reader.read(new NNMolecule())
println "CID: " + mol.getProperty("PubChem CID")
(注:这段代码是用 Groovy 编写的,但经过一些调整后它也可以在 Java 中运行)
所以,如果有人可以帮助我,那就太好了:)