Hi.
I have some questions. I have a scheduled job on my schedule job I need to call an API Webscript that I have. Currently, am stuck on call API Webscript. Can someone help me to explain the best way to call API Webscript. Below is the code that i stuck.
/** * The Class CustomJobProcessor.<br/> */ public class CustomJobProcessor implements org.quartz.StatefulJob{ /** The Constant LOG. */ private static final Log LOG = LogFactory.getLog(CustomJobProcessor.class); /** The global properties. */ private Properties globalProperties; /** The service registry. */ private ServiceRegistry serviceRegistry; @Override public void execute(final JobExecutionContext jobCtx) throws JobExecutionException { System.out.println("CustomJobProcessor Started.."); try{ //Run as system user since this job is user independent hence // permission is required on repo AuthenticationUtil.setRunAsUserSystem(); System.out.println("AuthenticationUtil"); // TODO:: Put job processing logic here.. // Get the job space where all jobs are stored // using serviceRegistry.getFileFolderService() // Read the jobs in a list as given below: // List<FileInfo> fileInfoList = fileFolderService.listFiles(jobSpaceNode); // Read the uniuqe id from the job property and process AuthenticationService authenticationService = this.serviceRegistry.getAuthenticationService(); String ticket = authenticationService.getCurrentTicket(); HttpClient client = new HttpClient(); //String uid = recorNoNodeRef.getId(); //String apiurl = "http://172.16.20.210:8080/alfresco/s/api/managePermissionQueryBy?nodeRef=workspace://SpacesStore/98a93306-3888-4cb2-87fa-2fafa14462d1" + "?alf_ticket=" + ticket; String apiurl = "http://172.16.20.210:8080/alfresco/s/api/managePermissionQueryBy?nodeRef=workspace://SpacesStore/98a93306-3888-4cb2-87fa-2fafa14462d1"; System.out.println("Get url :::" + apiurl); String resultString = ""; GetMethod getComment = new GetMethod(apiurl); try { int status = client.executeMethod(getComment); if (status != 200) { System.out.println("Method failed: " + getComment.getStatusLine()); } resultString = getComment.getResponseBodyAsString(); System.out.println("==== resultString ===="); System.out.println(resultString); System.out.println("==== resultString ===="); } catch (Exception e) { System.out.println("Line 1643::" + e.getMessage()); //return "{\"error\":\"" + e.getMessage() + "\"}"; System.out.println("error :::" + e.getMessage()); } finally { getComment.releaseConnection(); } } catch (RuntimeException excp){ System.out.println("Exception occured while processing job" + excp); } System.out.println("CustomJobProcessor End!"); }// execute end /** * Sets the global properties. * * @param globalProperties the global properties */ public void setGlobalProperties(final Properties globalProperties) { this.globalProperties = globalProperties; } /** * Sets the service registry. * * @param serviceRegistry the service registry */ public void setServiceRegistry(final ServiceRegistry serviceRegistry) { this.serviceRegistry = serviceRegistry; } }
By error as below
Method failed: HTTP/1.1 401 Unauthorized
==== resultString ====
{
"status" :
{
"code" : 401,
"name" : "Unauthorized",
"description" : "The request requires HTTP authentication."
},
"message" : "00270000 Authentication failed for Web Script org\/alfresco\/repository\/managePermission\/managepermissionby.get",
"exception" : "",
"callstack" :
[
],
"server" : "Enterprise v5.2.3 (r852994b1-b12) schema 10,065",
"time" : "Jan 27, 2022 11:22:05 AM"
}
==== resultString ====
Since you are in the Repository side, why to invoke a WebScript but to the code executed by that WebScript? Is there any other integration available by using Java API?
Ask for and offer help to other Alfresco Content Services Users and members of the Alfresco team.
Related links:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.