Socket API
try (var soc = new Socket("example.com", 80);
var pw = new PrintWriter(soc.getOutputStream());
var isr = new InputStreamReader(soc.getInputStream());
var bur = new BufferedReader(isr)) {
pw.println("GET / HTTP/1.1");
pw.println("Host: example.com");
pw.println();
pw.flush();
bur.lines()
.dropWhile(not(String::isEmpty))
.skip(1)
.limit(10)
.forEach(System.out::println);
}
Slide 14
Slide 14 text
Socket API
try (var soc = new Socket("example.com", 80);
var pw = new PrintWriter(soc.getOutputStream());
var isr = new InputStreamReader(soc.getInputStream());
var bur = new BufferedReader(isr)) {
pw.println("GET / HTTP/1.1");
pw.println("Host: example.com");
pw.println();
pw.flush();
bur.lines()
.dropWhile(not(String::isEmpty))
.skip(1)
.limit(10)
.forEach(System.out::println);
}
Slide 15
Slide 15 text
Socket API
try (var soc = new Socket("example.com", 80);
var pw = new PrintWriter(soc.getOutputStream());
var isr = new InputStreamReader(soc.getInputStream());
var bur = new BufferedReader(isr)) {
pw.println("GET / HTTP/1.1");
pw.println("Host: example.com");
pw.println();
pw.flush();
bur.lines()
.dropWhile(not(String::isEmpty))
.skip(1)
.limit(10)
.forEach(System.out::println);
}
Slide 16
Slide 16 text
Socket API
try (var soc = new Socket("example.com", 80);
var pw = new PrintWriter(soc.getOutputStream());
var isr = new InputStreamReader(soc.getInputStream());
var bur = new BufferedReader(isr)) {
pw.println("GET / HTTP/1.1");
pw.println("Host: example.com");
pw.println();
pw.flush();
bur.lines()
.dropWhile(not(String::isEmpty))
.skip(1)
.limit(10)
.forEach(System.out::println);
}
Slide 17
Slide 17 text
いやプロトコルの面倒はみたくない
Slide 18
Slide 18 text
java.net.URLConnection
Slide 19
Slide 19 text
URLConnection
var url = "http://example.com";
URLConnection conn = new URL(url).openConnection();
System.out.println(((HttpURLConnection)conn).getResponseCode());
System.out.println(conn.getContentType());
System.out.println(conn.getHeaderField("Cache-Control"));
try (var is = conn.getInputStream();
var isr = new InputStreamReader(is, "utf-8");
var bur = new BufferedReader(isr)) {
bur.lines()
.limit(10)
.forEach(System.out::println);
}
Slide 20
Slide 20 text
URLConnection
var url = "http://example.com";
URLConnection conn = new URL(url).openConnection();
System.out.println(((HttpURLConnection)conn).getResponseCode());
System.out.println(conn.getContentType());
System.out.println(conn.getHeaderField("Cache-Control"));
try (var is = conn.getInputStream();
var isr = new InputStreamReader(is, "utf-8");
var bur = new BufferedReader(isr)) {
bur.lines()
.limit(10)
.forEach(System.out::println);
}
Slide 21
Slide 21 text
URLConnection
var url = "http://example.com";
URLConnection conn = new URL(url).openConnection();
System.out.println(((HttpURLConnection)conn).getResponseCode());
System.out.println(conn.getContentType());
System.out.println(conn.getHeaderField("Cache-Control"));
try (var is = conn.getInputStream();
var isr = new InputStreamReader(is, "utf-8");
var bur = new BufferedReader(isr)) {
bur.lines()
.limit(10)
.forEach(System.out::println);
}
Slide 22
Slide 22 text
URLConnection
var url = "http://example.com";
URLConnection conn = new URL(url).openConnection();
System.out.println(((HttpURLConnection)conn).getResponseCode());
System.out.println(conn.getContentType());
System.out.println(conn.getHeaderField("Cache-Control"));
try (var is = conn.getInputStream();
var isr = new InputStreamReader(is, "utf-8");
var bur = new BufferedReader(isr)) {
bur.lines()
.limit(10)
.forEach(System.out::println);
}
Slide 23
Slide 23 text
URLConnection
var url = "http://example.com";
URLConnection conn = new URL(url).openConnection();
System.out.println(((HttpURLConnection)conn).getResponseCode());
System.out.println(conn.getContentType());
System.out.println(conn.getHeaderField("Cache-Control"));
try (var is = conn.getInputStream();
var isr = new InputStreamReader(is, "utf-8");
var bur = new BufferedReader(isr)) {
bur.lines()
.limit(10)
.forEach(System.out::println);
}
レスポンス用オブジェクト
• レスポンスのJSONをマッピングする
class AedData {
public int DIST;
public String Id;
public String LocationName;
public String Perfecture;
public String City;
double Latitude;
double Longitude;
}
Slide 40
Slide 40 text
サービスをマッピングする
• interfaceのメソッドとして定義
public interface AedService {
@GET("AEDSearch")
Call> aedSearch(
@Query("lat") double lat, @Query("lng") double lng, @Query("r")int r);
}