Como receber um JSONObject?

2 respostas
S

Pessoal estou com dúvida de como eu recebo um JSONObject em um Servlet?

Eu faço esse Post para um Servlet

JSONObject jsonObj = new JSONObject(); jsonObj.put("username", username); jsonObj.put("apikey", apikey); // Create the POST object and add the parameters HttpPost httpPost = new HttpPost(url); StringEntity entity = new StringEntity(jsonObj.toString(), HTTP.UTF_8); entity.setContentType("application/json"); httpPost.setEntity(entity); HttpClient client = new DefaultHttpClient(); HttpResponse response = client.execute(httpPost);

Como eu receberia esse Post lá no Servlet?
O request.getParameter() não funciona…

Espero ajuda de alguem, obrigado pela atenção

2 Respostas

R

Tenta recupera pelo objeto “HttpResponse response”. Acho que tem um método getEntity().

S

Valew por responder cara, olha o que eu to tentando fazer:

tenho essa Home.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Testando Servlet
<%
out.println("<form method=\"GET\" action=\"Servlet2\">");
out.println("Username: <input type=\"text\" name=\"username\" size=\"15\" /><br />");
out.println("Password: <input type=\"password\" name=\"password\" size=\"15\" /><br />");
out.println("<div align=\"center\">");
out.println("<p><input type=\"submit\" value=\"Login\" /></p>");
out.println("</div>");
out.println("</form>"); %>
</body>
</html>

Tenho esse Servlet:

package com;



import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.simple.JSONObject;

/**
 * Servlet implementation class Servlet
 */
@WebServlet("/Servlet")
public class Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}
	public JSONObject requestParamsToJSON(ServletRequest req) {
		  JSONObject jsonObj = new JSONObject();
		  Map<String,String[]> params = req.getParameterMap();
		  for (Map.Entry<String,String[]> entry : params.entrySet()) {
		    String v[] = entry.getValue();
		    Object o = (v.length == 1) ? v[0] : v;
		    jsonObj.put(entry.getKey(), o);
		  }
		  return jsonObj;
		}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<body> TESTE </body>");
		out.println("</html>");
		JSONObject jsonObj = requestParamsToJSON(request);
		out.flush();
		out.close();
	}

}

E o outro Servlet2:

package com;



import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.simple.JSONObject;

/**
 * Servlet implementation class Servlet2
 */
@WebServlet("/Servlet2")
public class Servlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public Servlet2() {
        super();
        // TODO Auto-generated constructor stub
    }
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String param = request.getParameter("username");
		PrintWriter out = response.getWriter();
		out.println("TESTEEEEEEEEEEEEEEEEEEEEE");
		if(param =="Marlon"){
			out.println("TESTE SERVLET2");	
			String username = "Marlon";
			String apikey = "123123123";
			
			JSONObject jsonObj = new JSONObject();
			jsonObj.put("username", username);
			jsonObj.put("apikey", apikey);
			HttpClient client = new DefaultHttpClient();
			System.out.println(jsonObj.toString());

			// Create the POST object and add the parameters
			HttpPost httpPost = new HttpPost("http://localhost:8080/infra-mon/Servlet");
			StringEntity entity = new StringEntity(jsonObj.toString());
			entity.setContentType("application/json");
			httpPost.setEntity(entity);
			
			HttpResponse response2 = client.execute(httpPost);
		}
		out.flush();
		out.close();
		
	}
}

Estou só querendo testar a comunicação entre 2 Servlets via JSON, porem não estou conseguindo, então queria ver se alguem pudesse me indicar aonde estou errando.

Obrigado desde já.

Criado 17 de dezembro de 2012
Ultima resposta 17 de dez. de 2012
Respostas 2
Participantes 2