{"id":1372,"date":"2018-08-16T23:04:38","date_gmt":"2018-08-16T14:04:38","guid":{"rendered":"https:\/\/esoro.jp\/?p=1372"},"modified":"2018-08-16T23:04:38","modified_gmt":"2018-08-16T14:04:38","slug":"ntlm%e8%aa%8d%e8%a8%bc%e3%81%ae%e3%82%b5%e3%82%a4%e3%83%88%e3%81%8b%e3%82%89%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%82%92%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"https:\/\/esoro.jp\/?p=1372","title":{"rendered":"NTLM\u8a8d\u8a3c\u306e\u30b5\u30a4\u30c8\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b"},"content":{"rendered":"<p>SpringBoot\u3067\u4f5c\u6210\u4e2d\u306e\u30a2\u30d7\u30ea\u306b\u3001\u4f01\u696d\u5185\u306eWeb\u30b5\u30a4\u30c8\u3088\u308a\u30a8\u30af\u30bb\u30eb\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u8981\u4ef6\u304c\u3042\u3063\u305f\u306e\u3067\u3001\u4f55\u3068\u306a\u304fBasic\u8a8d\u8a3c\u306e\u30b5\u30a4\u30c8\u3060\u308d\u3046\u306a\u3068\u601d\u3044\u8fbc\u3093\u3067\u5b9f\u88c5\u3092\u59cb\u3081\u307e\u3057\u305f\u304c\u5168\u7136\u7e4b\u304c\u308a\u307e\u305b\u3093\u3002<\/p>\n<p>wget &#8216;http:\/\/username:password@filestore.bbb.co.jp\/web\/download\/downloadfile.xlsx&#8217;<br \/>\n\u3067\u30d5\u30a1\u30a4\u30eb\u306f\u53d6\u308c\u307e\u3059\u3002<\/p>\n<p>\u3067\u3082\u3001<br \/>\ncurl &#8216;http:\/\/username:password@filestore.bbb.co.jp\/web\/download\/downloadfile.xlsx&#8217;<br \/>\n\u3067\u306f\u52d5\u304d\u307e\u305b\u3093\u3002<\/p>\n<p>\u8a66\u3057\u306bwget\u3092\u30c7\u30d0\u30c3\u30b0\u30e2\u30fc\u30c9\u3067\u3084\u3063\u3066\u307f\u3066\u6c17\u304c\u4ed8\u304d\u307e\u3057\u305f\u3002\u3002<\/p>\n<p>WWW-Authenticate: NTLM<\/p>\n<p>\u3053\u306e\u30b5\u30a4\u30c8\u3001NTLM\u8a8d\u8a3c\u3067\u3059\u306d\u3002\u3002<\/p>\n<p>\u4e0b\u8a18\u3092\u53c2\u8003\u306b\u8a8d\u8a3c\u7b87\u6240\u3092\u5909\u66f4<br \/>\n<a href=\"http:\/\/code-addict.pl\/reporting-services-rest-url-client\/\" target=\"_blank\">http:\/\/code-addict.pl\/reporting-services-rest-url-client\/<\/a><\/p>\n<p>\u307e\u305f\u4f9d\u5b58\u304c\u5897\u3048\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u304c\u3002\u3002<\/p>\n<pre class=\"lang:xhtml decode:true \" title=\"pom.xml\" >       &lt;dependency&gt;\r\n\t\t&lt;groupId&gt;org.apache.httpcomponents&lt;\/groupId&gt;\r\n\t\t&lt;artifactId&gt;httpclient&lt;\/artifactId&gt;\r\n\t\t&lt;version&gt;4.5.6&lt;\/version&gt;\r\n\t&lt;\/dependency&gt;<\/pre>\n<p>\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u304c\u66f4\u65b0\u3055\u308c\u3066\u3044\u305f\u6642\u3060\u3051\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3068\u3044\u3046\u5bfe\u5fdc\u3082\u5fc5\u8981\u306a\u306e\u3067\u3001\u30b5\u30fc\u30d0\u5185\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u3068\u30b5\u30a4\u30c8\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092\u30b5\u30a4\u30c8\u4e0a\u3068\u540c\u3058\u6642\u9593\u306b\u66f8\u304d\u63db\u3048\u308b\u3068\u3044\u3046\u5bfe\u5fdc\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n<p>\u3067\u3001\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u306f\u3069\u3053\uff1f<a href=\"https:\/\/stackoverflow.com\/questions\/4326604\/get-file-creation-date-over-http\" target=\"_blank\">\u3053\u3053<\/a>\u306b\u66f8\u3044\u3066\u307e\u3057\u305f\u3002<\/p>\n<p>\u78ba\u304b\u306bhttp\u30d8\u30c3\u30c0\u306b<br \/>\nLast-Modified:Tue, 14 Aug 2018 08:53:30 GMT<br \/>\n\u3068\u66f8\u3044\u3066\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u7d50\u5c40\u3001\u3053\u3093\u306a\u611f\u3058\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002<\/p>\n<pre class=\"lang:java decode:true \" title=\"FileDownLoader.java\" >import java.io.IOException;\r\nimport java.nio.file.Files;\r\nimport java.nio.file.Path;\r\nimport java.nio.file.Paths;\r\nimport java.nio.file.attribute.FileTime;\r\nimport java.text.DateFormat;\r\nimport java.text.ParseException;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Locale;\r\n\r\nimport org.apache.http.auth.AuthScope;\r\nimport org.apache.http.auth.NTCredentials;\r\nimport org.apache.http.client.CredentialsProvider;\r\nimport org.apache.http.client.methods.CloseableHttpResponse;\r\nimport org.apache.http.client.methods.HttpGet;\r\nimport org.apache.http.impl.client.BasicCredentialsProvider;\r\nimport org.apache.http.impl.client.CloseableHttpClient;\r\nimport org.apache.http.impl.client.HttpClientBuilder;\r\nimport org.apache.http.util.EntityUtils;\r\nimport org.springframework.stereotype.Component;\r\n\r\n@Component\r\npublic class FileDownLoader {\r\n\tpublic void donwLoadFile(String fileName) throws IOException, ParseException{\r\n\r\n\t\tFileTime beforeT = null;\r\n        Path path = Paths.get(\"\/localpath\/\" + fileName);\r\n\t\ttry{\r\n\t\t\t\/\/\u66f4\u65b0\u524d\u30d5\u30a1\u30a4\u30eb\u306e\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u53d6\u5f97\r\n\t\t\tbeforeT = Files.getLastModifiedTime(path);\r\n\t\t} catch (Exception ex) {\r\n\t\t\t\/\/\u65b0\u898f\u30d5\u30a1\u30a4\u30eb\r\n\t\t}\r\n        String url = \"http:\/\/filestore.bbb.co.jp\/web\/download\/\" +fileName;\r\n    \tCredentialsProvider credentialsProvider = new BasicCredentialsProvider();\r\n        credentialsProvider.setCredentials(AuthScope.ANY,\r\n                 new NTCredentials(\"username\", \"password\", null, null));\r\n        HttpGet httpGet = new HttpGet(url);\r\n         \r\n        CloseableHttpClient httpclient = HttpClientBuilder\r\n                 .create()\r\n                 .setDefaultCredentialsProvider(credentialsProvider)\r\n                 .build();\r\n         \r\n        CloseableHttpResponse closeableHttpResponse = httpclient.execute(httpGet);\r\n         \r\n        FileTime modTime = beforeT;\r\n        if( closeableHttpResponse.getAllHeaders() != null){\r\n        \tDateFormat df = new SimpleDateFormat(\"EEE, d MMM yyyy HH:mm:ss Z\", Locale.ENGLISH);\r\n        \tmodTime = FileTime.from(df.parse(closeableHttpResponse.getFirstHeader(\"Last-Modified\").getValue()).toInstant());\r\n        }\r\n        \/\/\u66f4\u65b0\u7121\u3057\r\n\t\tif(beforeT != null &amp;&amp; beforeT.compareTo(modTime) == 0){\r\n\t\t\tcloseableHttpResponse.close();\r\n\t\t\treturn;\r\n\t\t}\r\n        Files.write(path, EntityUtils.toByteArray(closeableHttpResponse.getEntity()));\r\n        \/\/\u66f4\u65b0\u65e5\u6642\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u66f8\u304d\u63db\u3048\r\n        Files.setLastModifiedTime(path, modTime);\r\n\t\tcloseableHttpResponse.close();\r\n\t}\r\n}<\/pre>\n<p>\u30c6\u30b9\u30c8\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<pre class=\"lang:java decode:true \" title=\"DownloadTest.java\" >@RunWith(SpringRunner.class)\r\n@SpringBootTest(classes = UoeautomailApplication.class)\r\npublic class DownloadTest throws Exception{\r\n\r\n\t@Autowired\r\n\tFileDownLoader fileDownLoader;\r\n\r\n \t@Test\r\n\tpublic void test(){\r\n  \t   \tfileDownLoader.donwLoadFile(\"aaa.xlsx\");\r\n\t}\r\n}<\/pre>\n<p>\u3068\u308a\u3048\u3042\u305a\u3001\u52d5\u3044\u305f\u306e\u3067\u6574\u7406\u3057\u3066\u304b\u3089\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SpringBoot\u3067\u4f5c\u6210\u4e2d\u306e\u30a2\u30d7\u30ea\u306b\u3001\u4f01\u696d\u5185\u306eWeb\u30b5\u30a4\u30c8\u3088\u308a\u30a8\u30af\u30bb\u30eb\u30d5\u30a1\u30a4\u30eb &hellip; <a href=\"https:\/\/esoro.jp\/?p=1372\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/esoro.jp\/index.php?rest_route=\/wp\/v2\/posts\/1372"}],"collection":[{"href":"https:\/\/esoro.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esoro.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esoro.jp\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/esoro.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1372"}],"version-history":[{"count":0,"href":"https:\/\/esoro.jp\/index.php?rest_route=\/wp\/v2\/posts\/1372\/revisions"}],"wp:attachment":[{"href":"https:\/\/esoro.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esoro.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esoro.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}