我是 Java 的新手,我对从 POST 请求中检索两条数据(queryKey
和 webEnv
)需要多少代码感到震惊。有没有更简单或更优化的方法来完成我在这里所做的事情?
String link = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/epost.fcgi?db=nucleotide&id=" + id;
URLConnection connection = new URL(link).openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
connection.connect();
BufferedReader r = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String webEnv = "";
String queryKey = "";
// Put together string to be scanned to find patterns
StringBuilder sb = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
sb.append(line);
}
String result = sb.toString();
// Specify patterns to search for
String queryKeyRegEx = "<QueryKey>(\\d+)<\\/QueryKey>";
String webEnvRegEx = "<WebEnv>(\\S+)<\\/WebEnv>";
// Create Pattern objects
Pattern queryKeyPattern = Pattern.compile(queryKeyRegEx);
Pattern webEnvPattern = Pattern.compile(webEnvRegEx);
// Create Matcher objects
Matcher queryKeyMatcher = queryKeyPattern.matcher(result);
if (queryKeyMatcher.find()) {
queryKey = queryKeyMatcher.group(1);
System.out.println(queryKey);
}
Matcher webEnvMatcher = webEnvPattern.matcher(result);
if (webEnvMatcher.find()) {
webEnv = webEnvMatcher.group(1);
System.out.println(webEnv);
}
最佳答案
检查一下:
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilderFactory;
import java.net.URL;
public class Try {
private static Document loadTestDocument(String url) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
return factory.newDocumentBuilder().parse(new URL(url).openStream());
}
public static void main(String[] args) throws Exception {
Document doc = loadTestDocument("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/epost.fcgi?db=nucleotide&id=1");
NodeList nodeList = doc.getElementsByTagName("ePostResult");
Element element = (Element) nodeList.item(0);
String webEnv = element.getElementsByTagName("WebEnv").item(0).getTextContent();
String queryKey = element.getElementsByTagName("QueryKey").item(0).getTextContent();
System.out.println(webEnv);
System.out.println(queryKey);
}
}
关于java - 有没有办法简化 Java 模式匹配从 POST 请求中检索两条数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41655781/