|
18 | 18 |
|
19 | 19 | import org.json.JSONObject;
|
20 | 20 |
|
21 |
| -import java.io.BufferedReader; |
22 |
| -import java.io.IOException; |
23 |
| -import java.io.InputStreamReader; |
24 |
| -import java.io.PrintWriter; |
25 |
| -import java.net.URL; |
26 |
| - |
| 21 | +import javax.servlet.ServletException; |
27 | 22 | import javax.servlet.http.HttpServlet;
|
28 | 23 | import javax.servlet.http.HttpServletRequest;
|
29 | 24 | import javax.servlet.http.HttpServletResponse;
|
| 25 | +import java.io.*; |
| 26 | +import java.net.HttpURLConnection; |
| 27 | +import java.net.URL; |
| 28 | +import java.net.URLEncoder; |
30 | 29 |
|
31 | 30 | @SuppressWarnings("serial")
|
32 | 31 | public class UrlFetchServlet extends HttpServlet {
|
33 | 32 |
|
34 | 33 | @Override
|
35 | 34 | public void doGet(HttpServletRequest req, HttpServletResponse resp)
|
36 |
| - throws IOException { |
37 |
| - PrintWriter out = resp.getWriter(); |
38 |
| - out.println("<html><body>"); |
| 35 | + throws IOException, ServletException { |
39 | 36 |
|
40 | 37 | // [START example]
|
41 | 38 | URL url = new URL("http://api.icndb.com/jokes/random");
|
42 | 39 | BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
|
43 |
| - String json = ""; |
| 40 | + StringBuffer json = new StringBuffer(); |
44 | 41 | String line;
|
45 | 42 |
|
46 | 43 | while ((line = reader.readLine()) != null) {
|
47 |
| - json += line; |
| 44 | + json.append(line); |
48 | 45 | }
|
49 | 46 | reader.close();
|
50 | 47 | // [END example]
|
51 |
| - JSONObject jo = new JSONObject(json); |
52 |
| - out.println("<h2>" |
53 |
| - + jo.getJSONObject("value").getString("joke") |
54 |
| - + "</h2>"); |
55 |
| - out.println("</body></html>"); |
| 48 | + JSONObject jo = new JSONObject(json.toString()); |
| 49 | + |
| 50 | + req.setAttribute("joke", jo.getJSONObject("value").getString("joke")); |
| 51 | + req.getRequestDispatcher("/main.jsp").forward(req, resp); |
56 | 52 | }
|
| 53 | + |
| 54 | + @Override |
| 55 | + public void doPost(HttpServletRequest req, HttpServletResponse resp) |
| 56 | + throws IOException, ServletException { |
| 57 | + |
| 58 | + String id = req.getParameter("id"); |
| 59 | + String text = req.getParameter("text"); |
| 60 | + |
| 61 | + if (id == null || text == null || id == "" || text == "") { |
| 62 | + req.setAttribute("error", "invalid input"); |
| 63 | + req.getRequestDispatcher("/main.jsp").forward(req,resp); |
| 64 | + return; |
| 65 | + } |
| 66 | + |
| 67 | + JSONObject jsonObj = new JSONObject() |
| 68 | + .put("userId", 33) |
| 69 | + .put("id", id) |
| 70 | + .put("title", text) |
| 71 | + .put("body", text); |
| 72 | + |
| 73 | + // [START complex] |
| 74 | + URL url = new URL("http://jsonplaceholder.typicode.com/posts/"+id); |
| 75 | + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
| 76 | + conn.setDoOutput(true); |
| 77 | + conn.setRequestMethod("PUT"); |
| 78 | + |
| 79 | + OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); |
| 80 | + writer.write(URLEncoder.encode(jsonObj.toString(), "UTF-8")); |
| 81 | + writer.close(); |
| 82 | + |
| 83 | + int respCode = conn.getResponseCode(); // New items get NOT_FOUND on PUT |
| 84 | + if (respCode == HttpURLConnection.HTTP_OK || respCode == HttpURLConnection.HTTP_NOT_FOUND) { |
| 85 | + req.setAttribute("error", "" ); |
| 86 | + StringBuffer response = new StringBuffer(); |
| 87 | + String line; |
| 88 | + |
| 89 | + BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); |
| 90 | + while ((line = reader.readLine()) != null) { |
| 91 | + response.append(line); |
| 92 | + } |
| 93 | + reader.close(); |
| 94 | + req.setAttribute("response", response.toString()); |
| 95 | + } else { |
| 96 | + req.setAttribute("error", conn.getResponseCode()+" "+conn.getResponseMessage()); |
| 97 | + } |
| 98 | + // [END complex] |
| 99 | + req.getRequestDispatcher("/main.jsp").forward(req, resp); |
| 100 | + } |
| 101 | + |
57 | 102 | }
|
0 commit comments