私はJavaに慣れていないので、POSTリクエストから2つのデータ(queryKey
とwebEnv
)を取得するために必要なコードがどれほどのところに驚いています。私がここでやったことをやるためのより簡単で最適な方法がありますか?POSTリクエストから2つのデータを取り出すための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);
}
を、あなたはAPIにHTTP GETリクエストを行うと、XML結果を解析しています。標準のJavaライブラリを使用していますが、うまく動作するには多くのコードが必要になることがあります。私が使用することを示唆するライブラリがいくつかありますが、それが良い場合は例を挙げることができます。 – phss
例を見るのが好きです@phss – briennakh
SAXパーサーをHTTP接続の入力ストリームに直接接続します。しかしそれにはかなりの数のコードが必要です。 –