in appengine-java8/urlfetch/src/main/java/com/example/appengine/UrlFetchServlet.java [62:115]
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
String id = req.getParameter("id");
String text = req.getParameter("text");
// Validation for id and text inputs.
if (id == null
|| text == null
|| id.isEmpty()
|| text.isEmpty()
|| Integer.parseInt(id) > 100) {
req.setAttribute("error", "invalid input");
req.getRequestDispatcher("/urlfetchresult.jsp").forward(req, resp);
return;
}
// [START complex]
URL url = new URL("http://jsonplaceholder.typicode.com/posts/" + id);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// Enable output for the connection.
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
conn.setRequestProperty("Accept", "application/json");
// Set HTTP request method.
conn.setRequestMethod("PUT");
// Create JSON request.
JSONObject jsonObj =
new JSONObject().put("userId", 1).put("id", id).put("title", text).put("body", text);
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(jsonObj.toString());
writer.close();
int respCode = conn.getResponseCode(); // New items get NOT_FOUND on PUT
if (respCode == HttpURLConnection.HTTP_OK || respCode == HttpURLConnection.HTTP_NOT_FOUND) {
req.setAttribute("error", "");
StringBuilder response = new StringBuilder();
String line;
// Read input data stream.
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
req.setAttribute("response", response.toString());
} else {
req.setAttribute("error", conn.getResponseCode() + " " + conn.getResponseMessage());
}
// [END complex]
req.getRequestDispatcher("/urlfetchresult.jsp").forward(req, resp);
}