| |
---|
| | import org.w3c.dom.NamedNodeMap; |
---|
| | import org.w3c.dom.Node; |
---|
| | import org.w3c.dom.NodeList; |
---|
| | import org.xml.sax.SAXException; |
---|
| | import osm.jp.coverage.busstop.DbBusstop; |
---|
| | import static osm.jp.coverage.busstop.DbExistBusstop.DROP; |
---|
| | |
---|
| | /** |
---|
| | * Java HTTP クライアントサンプル - HttpURLConnection 版 - |
---|
| | * |
---|
| |
---|
| | * @param con |
---|
| | * @throws SQLException |
---|
| | */ |
---|
| | public static void create(Connection con) throws SQLException { |
---|
| | create(con, false); |
---|
| | } |
---|
| | |
---|
| | public static void create(Connection con, boolean withdrop) throws SQLException { |
---|
| | String createSt; |
---|
| | |
---|
| | if (withdrop) { |
---|
| | DbBusstop.drop(con, HttpPOST.TABLE_NAME); |
---|
| | DbBusstop.drop(con, "AREA_NODE"); |
---|
| | } |
---|
| | |
---|
| | // 'table.FUEL_EXIST'を新規に作る |
---|
| | createSt = "CREATE TABLE "+ HttpPOST.TABLE_NAME +" (idref VARCHAR(12) NOT NULL, lat DOUBLE, lon DOUBLE, score INT, PRIMARY KEY(idref));"; |
---|
| | Db.updateSQL(con, createSt); |
---|
| |
---|
| | int responsecode = 0; |
---|
| | |
---|
| | do { |
---|
| | HttpURLConnection urlconn = (HttpURLConnection)url.openConnection(); |
---|
| | urlconn.setRequestMethod("POST"); |
---|
| | urlconn.setDoOutput(true); // POSTのデータを後ろに付ける |
---|
| | urlconn.setInstanceFollowRedirects(false); // 勝手にリダイレクトさせない |
---|
| | urlconn.setRequestProperty("Accept-Language", "ja;q=0.7,en;q=0.3"); |
---|
| | urlconn.setRequestProperty("Content-Type","text/xml;charset=utf-8"); |
---|
| | urlconn.connect(); |
---|
| | |
---|
| | try (PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(urlconn.getOutputStream(), "utf-8")))) { |
---|
| | outputWriter(pw, queryText); |
---|
| | pw.flush(); |
---|
| | } |
---|
| | |
---|
| | try { |
---|
| | TimeUnit.SECONDS.sleep(1); |
---|
| | } catch (InterruptedException e) {} |
---|
| | |
---|
| | responsecode = urlconn.getResponseCode(); |
---|
| | System.out.println("レスポンスコード[" + responsecode + "] " + |
---|
| | "レスポンスメッセージ[" + urlconn.getResponseMessage() + "]"); |
---|
| | Map<String,List<String>> headers = urlconn.getHeaderFields(); |
---|
| | for (Map.Entry<String, List<String>> bar : headers.entrySet()) { |
---|
| | System.out.print("\t" + bar.getKey() +"\t: "); // キーを取得 |
---|
| | List<String> vals = bar.getValue(); // 値を取得 |
---|
| | for(String str : vals) { |
---|
| | System.out.print("["+ str +"],"); |
---|
| | } |
---|
| | System.out.println(); |
---|
| | } |
---|
| | if ((responsecode == 429) || (responsecode == 504) || (responsecode == 500)) { |
---|
| | // レスポンスコード[429] レスポンスメッセージ[Too Many Requests] |
---|
| | // レスポンスコード[500] レスポンスメッセージ[Internal server error] |
---|
| | // レスポンスコード[504] レスポンスメッセージ[Gateway Timeout] |
---|
| | urlconn.setRequestMethod("POST"); |
---|
| | urlconn.setDoOutput(true); // POSTのデータを後ろに付ける |
---|
| | urlconn.setInstanceFollowRedirects(false); // 勝手にリダイレクトさせない |
---|
| | urlconn.setRequestProperty("Accept-Language", "ja;q=0.7,en;q=0.3"); |
---|
| | urlconn.setRequestProperty("Content-Type","text/xml;charset=utf-8"); |
---|
| | urlconn.connect(); |
---|
| | |
---|
| | try (PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(urlconn.getOutputStream(), "utf-8")))) { |
---|
| | outputWriter(pw, queryText); |
---|
| | pw.flush(); |
---|
| | } |
---|
| | |
---|
| | try { |
---|
| | TimeUnit.MINUTES.sleep(5); |
---|
| | TimeUnit.SECONDS.sleep(1); |
---|
| | } catch (InterruptedException e) {} |
---|
| | } |
---|
| | else { |
---|
| | System.out.println("\n---- ボディ ----"); |
---|
| | |
---|
| | responsecode = urlconn.getResponseCode(); |
---|
| | System.out.println("レスポンスコード[" + responsecode + "] " + |
---|
| | "レスポンスメッセージ[" + urlconn.getResponseMessage() + "]"); |
---|
| | Map<String,List<String>> headers = urlconn.getHeaderFields(); |
---|
| | for (Map.Entry<String, List<String>> bar : headers.entrySet()) { |
---|
| | System.out.print("\t" + bar.getKey() +"\t: "); // キーを取得 |
---|
| | List<String> vals = bar.getValue(); // 値を取得 |
---|
| | for(String str : vals) { |
---|
| | System.out.print("["+ str +"],"); |
---|
| | } |
---|
| | System.out.println(); |
---|
| | } |
---|
| | if ((responsecode == 429) || (responsecode == 504) || (responsecode == 500)) { |
---|
| | // レスポンスコード[429] レスポンスメッセージ[Too Many Requests] |
---|
| | // レスポンスコード[500] レスポンスメッセージ[Internal server error] |
---|
| | // レスポンスコード[504] レスポンスメッセージ[Gateway Timeout] |
---|
| | try { |
---|
| | TimeUnit.MINUTES.sleep(5); |
---|
| | } catch (InterruptedException e) {} |
---|
| | } |
---|
| | else { |
---|
| | System.out.println("\n---- ボディ ----"); |
---|
| | |
---|
| | File oFile = new File(HttpPOST.EXIST_FILE); |
---|
| | oFile.deleteOnExit(); |
---|
| | try (BufferedWriter hw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(oFile), "UTF-8"))) { |
---|
| | try (BufferedReader reader = new BufferedReader(new InputStreamReader(urlconn.getInputStream(), "UTF-8"))) { |
---|
| | while (true) { |
---|
| | String line = reader.readLine(); |
---|
| | if (line == null) { |
---|
| | break; |
---|
| | } |
---|
| | hw.write(line); |
---|
| | hw.newLine(); |
---|
| | } |
---|
| | hw.flush(); |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | File oFile = new File(HttpPOST.EXIST_FILE); |
---|
| | oFile.deleteOnExit(); |
---|
| | try (BufferedWriter hw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(oFile), "UTF-8"))) { |
---|
| | try (BufferedReader reader = new BufferedReader(new InputStreamReader(urlconn.getInputStream(), "UTF-8"))) { |
---|
| | while (true) { |
---|
| | String line = reader.readLine(); |
---|
| | if (line == null) { |
---|
| | break; |
---|
| | } |
---|
| | hw.write(line); |
---|
| | hw.newLine(); |
---|
| | } |
---|
| | hw.flush(); |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | urlconn.disconnect(); |
---|
| | } |
---|
| | catch (java.net.ConnectException e) { |
---|
| | // レスポンスコード[600] レスポンスメッセージ[接続がタイムアウトしました (Connection timed out)] |
---|
| | responsecode = 600; |
---|
| | } |
---|
| | finally { |
---|
| | urlconn.disconnect(); |
---|
| | } |
---|
| | try { |
---|
| | TimeUnit.SECONDS.sleep(5); |
---|
| | } catch (InterruptedException e) {} |
---|
| | } |
---|
| | while ((responsecode == 429) || (responsecode == 504)); |
---|
| | } |
---|
| | while ((responsecode == 429) || (responsecode == 504) || (responsecode == 600)); |
---|
| | } |
---|
| | |
---|
| | public static void outputWriter(PrintWriter pw, String text) { |
---|
| | System.out.println("\t" + text); |
---|
| | pw.print(text); |
---|
| |
---|
| | |