2222import java .io .OutputStreamWriter ;
2323import java .net .HttpURLConnection ;
2424import java .net .URL ;
25- import java .net .URLEncoder ;
2625import javax .servlet .ServletException ;
2726import javax .servlet .annotation .WebServlet ;
2827import javax .servlet .http .HttpServlet ;
3534@ WebServlet (
3635 name = "URLFetch" ,
3736 description = "URLFetch: Write low order IP address to Cloud SQL" ,
38- urlPatterns = "/urlfetch"
39- )
37+ urlPatterns = "/urlfetch" )
4038public class UrlFetchServlet extends HttpServlet {
4139
4240 @ Override
@@ -67,23 +65,33 @@ public void doPost(HttpServletRequest req, HttpServletResponse resp)
6765 String id = req .getParameter ("id" );
6866 String text = req .getParameter ("text" );
6967
70- if (id == null || text == null || id == "" || text == "" ) {
68+ // Validation for id and text inputs.
69+ if (id == null
70+ || text == null
71+ || id .isEmpty ()
72+ || text .isEmpty ()
73+ || Integer .parseInt (id ) > 100 ) {
7174 req .setAttribute ("error" , "invalid input" );
7275 req .getRequestDispatcher ("/urlfetchresult.jsp" ).forward (req , resp );
7376 return ;
7477 }
7578
76- JSONObject jsonObj =
77- new JSONObject ().put ("userId" , 1 ).put ("id" , id ).put ("title" , text ).put ("body" , text );
78-
7979 // [START complex]
8080 URL url = new URL ("http://jsonplaceholder.typicode.com/posts/" + id );
8181 HttpURLConnection conn = (HttpURLConnection ) url .openConnection ();
82+ // Enable output for the connection.
8283 conn .setDoOutput (true );
84+ conn .setRequestProperty ("Content-Type" , "application/json; charset=UTF-8" );
85+ conn .setRequestProperty ("Accept" , "application/json" );
86+ // Set HTTP request method.
8387 conn .setRequestMethod ("PUT" );
8488
89+ // Create JSON request.
90+ JSONObject jsonObj =
91+ new JSONObject ().put ("userId" , 1 ).put ("id" , id ).put ("title" , text ).put ("body" , text );
92+
8593 OutputStreamWriter writer = new OutputStreamWriter (conn .getOutputStream ());
86- writer .write (URLEncoder . encode ( jsonObj .toString (), "UTF-8" ));
94+ writer .write (jsonObj .toString ());
8795 writer .close ();
8896
8997 int respCode = conn .getResponseCode (); // New items get NOT_FOUND on PUT
@@ -92,6 +100,7 @@ public void doPost(HttpServletRequest req, HttpServletResponse resp)
92100 StringBuffer response = new StringBuffer ();
93101 String line ;
94102
103+ // Read input data stream.
95104 BufferedReader reader = new BufferedReader (new InputStreamReader (conn .getInputStream ()));
96105 while ((line = reader .readLine ()) != null ) {
97106 response .append (line );
0 commit comments