Reputation: 11
I'm posting to another sites servlet from Java code. It's receiving the data fine but for some reason the resourceResolver in the servlet won't work. It works when i post to the servlet using jQuery. Post to servlet:
String data = "data";
String dataString = "data=" + data;
byte[] dataStringBytes = dataString.getBytes(StandardCharsets.UTF_8);
HttpURLConnection connection = (HttpURLConnection) new URL("http://example:4502/bin/servlet").openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
DataOutputStream writer = new DataOutputStream(connection.getOutputStream());
writer.write(dataStringBytes);
writer.flush();
writer.close();
Snippet from servlet
@Override
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {
// Only works when posted from jQuery???
ResourceResolver resourceResolver = request.getResource().getResourceResolver();
Session session = resourceResolver.adaptTo(Session.class);
PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
}
Upvotes: 0
Views: 677
Reputation: 1323
Please read this post and this post. The ideal way of accessing resource resolver from sling servlets is to create system user and call getServiceResourceResolver method. This is important especially while hitting servlets from dispatcher when the user is anonymous. Resources needs to be accessed with valid system user to avoid permission issues.
This resource resolver can then be adapted to PageManager or TagManager or Session etc based on your need.
Upvotes: 0
Reputation: 699
Make sure anonymous is allowed to access that resource. Use PageManagerFactory API to get PageManager instead of AdaptTo() https://docs.adobe.com/docs/en/cq/5-6-1/javadoc/com/day/cq/wcm/api/PageManagerFactory.html
Upvotes: 1