저는 Java에 익숙하지 않아 POST 요청에서 두 개의 데이터 (queryKey
및 webEnv
)를 가져와야하는 데 얼마나 많은 코드가 필요한지에 놀랐습니다. 제가 여기서 한 일을하는 더 단순하거나 더 좋은 방법이 있습니까?POST 요청에서 두 가지 데이터를 검색하기 위해 Java 패턴 일치를 단순화하는 방법이 있습니까?
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);
}
, 당신은 HTTP는 API에 요청을 GET 일을하고, XML 결과를 분석하고 있습니다. 표준 Java 라이브러리를 사용하고 있지만, 제대로 작동하려면 많은 코드가 필요할 수도 있습니다. 내가 사용하라고 제안 할 수있는 몇 개의 라이브러리가 있으며, 괜찮 으면 예제를 제공 할 수 있습니까? – phss
예제를보고 싶습니다. @phss – briennakh
SAX 파서를 HTTP 연결의 입력 스트림에 직접 꽂습니다. 그러나 이것은 또한 몇 줄의 코드를 필요로합니다. –