Zoeken…


Consumeer Liferay JSON-service voor GET-aanvragen

Liferay onthult vele standaard- en aangepaste services die beschikbaar zijn voor andere systemen via JSON. Als u services voor een bepaalde liferay-instantie wilt verkennen, gebruikt u een bepaalde URL - in dit geval een lokale instantie:

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

voer hier de afbeeldingsbeschrijving in

Selecteer de gewenste service, verbruik de service met de gegeven syntaxis en parameters:

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

Gebruik bedrijfs- companyId and emailAddress om de gebruiker op te halen met de verwachte gegevenstypen, evenals mogelijke uitzonderingen die door de consument moeten worden verwerkt.

In het volgende voorbeeld wordt deze service uit een portlet gebruikt. De gegeven utility class-methode roept de webservice op en geeft de nodige argumenten door:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow