Buscar..


Consumir el servicio JSON de Liferay para solicitudes GET.

Liferay expone muchos servicios predeterminados y personalizados disponibles para otros sistemas a través de JSON. Para explorar servicios en una instancia particular de liferay, use una URL dada - Una instancia local en este caso:

http://localhost:8080/api/jsonws/

introduzca la descripción de la imagen aquí

Seleccione el servicio requerido, consuma el servicio con la sintaxis y los parámetros dados:

/user/get-user-by-email-address

Utilice companyId and emailAddress para recuperar al usuario con los tipos de datos esperados, así como las posibles excepciones que debe manejar el consumidor.

El siguiente ejemplo consume este servicio de un portlet. El método de clase de utilidad dado realiza una llamada al servicio web, pasando los argumentos necesarios:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import sun.misc.BASE64Encoder;

import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.theme.ThemeDisplay;

public class WebServiceUtil {

public static String requestWebService(ThemeDisplay themeDisplay) {
    
    String url="http://localhost:8080/api/jsonws/user/get-user-by-email-address/company-id/{company-id}/email-address/{email-address}";
    
    String groupId= Long.toString(themeDisplay.getCompanyId());
    String userEmail="[email protected]";
    
    String[] searchList={"{company-id}","{email-address}"};
    String[] replList={groupId,userEmail};

    //Path params are replaced with args to make web service call
    url=StringUtil.replace(url, searchList, replList);
    
    System.out.println(url);
    StringBuilder sb = new StringBuilder();
    JSONObject jsonObject=new JSONObject();
    try
    {
        URL urlVal = new URL(url);
        HttpURLConnection conn = (HttpURLConnection) urlVal.openConnection();
        
        //The user credentials are directly used here only for the purpose of example,always fetech these details from an external props file.
        
        String uname ="[email protected]";
        String pswd="test";
        String authStr=uname+":"+pswd;
        
        //Encoding username+pswd to be added to request header for making web service             call
        String authStrEnc=new BASE64Encoder().encode(authStr.getBytes());

        /*Authorization type is set to consume web service
        and encoded combination is set in header to autheticate caller*/

        conn.setRequestMethod("GET");
        conn.setRequestProperty("Accept", "application/json");
        conn.setRequestProperty("Authorization", "Basic "+authStrEnc);
        
        BufferedReader brf = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        
        JSONParser json=new JSONParser();
        jsonObject=(JSONObject)json.parse(brf);
        
        
        int cp;
        while ((cp = brf.read()) != -1) {
          sb.append((char) cp);
        }
    }
    catch(IOException e)
    {
        System.out.println("Something went wrong while reading/writing in stream!!");
    }
    catch (ParseException e) {
        System.out.println("Parse error");
    }
    
    //For purpose of simplicity we have fetched one of the fields from JSON response
    return (String)jsonObject.get("firstName");
    
}

}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow