Couldn't get Form data to Servlet
Hi all,
I have created registration form using Core form container. I need to save this data in a path based servlet. I have mentioned the servlet path but I'm getting only null values instead of the form fields. I have mentioned the correct name field for getting the parameter.

my servlet path:

my servlet code is :
package com.adobe.aem.FormsDemo.core.servlets;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.servlets.HttpConstants;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.eclipse.jetty.http.MultiPartFormInputStream;
import org.eclipse.jetty.util.MultiPartWriter;
import org.jetbrains.annotations.NotNull;
import org.json.JSONException;
import org.json.JSONObject;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
@Component(service = Servlet.class, property = {
Constants.SERVICE_DESCRIPTION + "=JSON path based servlet",
"sling.servlet.methods=" + HttpConstants.METHOD_POST,
"sling.servlet.methods=" + HttpConstants.METHOD_GET,
"sling.servlet.paths=" + "/bin/form" })
public class CustomServlet extends SlingAllMethodsServlet {
@Override
protected void doGet(@NotNull SlingHttpServletRequest request, @NotNull SlingHttpServletResponse response) throws IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.print(request.getRequestURL());
//out.print(request.getRequestParameter());
//request.getParameterById();
out.print("firstname is");
out.print(request.getParameter("firstname"));
out.print("lastname is");
out.print(request.getParameter("lastname"));
InputStream input = null;
try {
//String USER_AGENT = "Mozilla/5.0";
out.println("HTTP Post Request Test:-");
String url = "https://mocki.io/v1/bbb77b19-e2dc-454c-9b4d-a50db8fe99f6";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
//add request header
con.setRequestMethod("POST");
//con.setRequestProperty("User-Agent", USER_AGENT);
//con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
//Data to be posted
String fname = request.getParameter("firstname");
String lname = request.getParameter("lastname");
JSONObject json = new JSONObject();
json.put("firstname", fname);
json.put("lastname", lname);
out.print(fname);
out.print(lname);
//out.print(con.getResponseCode());
String urlParameters = "Firstname=" + fname + "&Lastname=" + lname;
// Send post request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(String.valueOf(json));
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
out.println("\nSending 'POST' request to URL : " + url);
out.println("Post parameters : " + json);
//out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer responseD = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
responseD.append(inputLine);
}
in.close();
//print result
out.println("Response From The URL: " + responseD.toString());
//response.sendRedirect("www.google.com");
} catch (IOException ex) {
ex.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Override
protected void doPost(@NotNull SlingHttpServletRequest req, @NotNull SlingHttpServletResponse res) throws IOException {
PrintWriter out = res.getWriter();
InputStream input = null;
try {
//String USER_AGENT = "Mozilla/5.0";
out.println("HTTP Post Request Test:-");
//add request header
// con.setRequestMethod("POST");
//Data to be posted
String fname = req.getParameter("firstname");
String lname = req.getParameter("lastname");
String urlParameters = "Firstname=" + fname + "&Lastname=" + lname;
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpPost httppost = new HttpPost("https://mocki.io/v1/bbb77b19-e2dc-454c-9b4d-a50db8fe99f6");
httppost.addHeader("firstname",fname);
httppost.addHeader("lastname",lname);
out.print(httppost);
CloseableHttpResponse response = httpclient.execute(httppost);
try {
out.print(response.getStatusLine());
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
out.println(resEntity.getContentLength());
}
EntityUtils.consume(resEntity);
} finally {
response.close();
}
} finally {
httpclient.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/* private static final long serialVersionUID = 1L;
@Reference
private transient ResourceResolverFactory resourceResolverFactory;
private static final Logger LOG = LoggerFactory.getLogger(CustomServlet.class);
@Override
protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) {
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
LOG.info("Able to hit in");
response.setStatus(SlingHttpServletResponse.SC_OK);
}
@Override
protected void doPost(SlingHttpServletRequest req,
SlingHttpServletResponse resp) throws ServletException, IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
try {
resp.setContentType("text/plain");
resp.getWriter().write("Simple Post Test");
resp.sendRedirect("www.google.com");
req = (SlingHttpServletRequest) new HttpGet("https://mocki.io/v1/bbb77b19-e2dc-454c-9b4d-a50db8fe99f6");
String firstname = req.getParameter("firstname");
String lastname = req.getParameter("lastname");
int age = Integer.parseInt(req.getParameter(String.valueOf("age")));
String gender = req.getParameter("gender");
String address1 = req.getParameter("address1");
String address2 = req.getParameter("address2");
String city = req.getParameter("city");
String states = req.getParameter("states");
int pincode = Integer.parseInt(req.getParameter(String.valueOf("pincode")));
resp = httpClient.execute(req);
System.out.print(firstname);
LOG.info(firstname);
resp.getWriter().print("call");
resp.sendRedirect("www.google.com");
/* final Map<String, Object > param = Collections.singletonMap(ResourceResolverFactory.SUBSERVICE, (Object) "getResourceResolver");
ResourceResolver resourceResolver = null;
try {
resourceResolver = resourceResolverFactory.getServiceResourceResolver(param);
Resource myResource = (Resource) resourceResolver.getResource("/content/usergenerated/data");
// if(myResource==null){
Map<String, Object> properties3 = new HashMap<String, Object>();
properties3.put("firstname",firstname);
properties3.put("lastname",lastname);
properties3.put("email",email);
properties3.put("subject",subject);
}
}
}*/