The 500 error is coming because HttpClient does not send the username/pwd by default. Use preemptive authentication by adding following line to your code
httpClient.getParams().setAuthenticationPreemptive(true); This would send u/p by default in first call itself and you should get 201 response Chetan Mehrotra On Wed, Jul 11, 2012 at 5:45 AM, André Basse <[email protected]> wrote: > Hi all, > > I have some trouble with my Java post request. Sling issues a 500 > error when I try to post my JPG to /images. > > I can find following line in the log file in Sling: > 11.07.2012 10:09:54.604 *ERROR* [127.0.0.1 [1341965394583] POST > /images/tubu2.jpg HTTP/1.1] > org.apache.sling.servlets.post.impl.operations.ModifyOperation Access > Denied Access denied. > > Below is my Java code. Any help is much appreciated. > > > public static void main(String[] args) throws HttpException, IOException { > > Credentials credentials = new > UsernamePasswordCredentials("admin", "admin"); > HttpClient httpClient = new HttpClient(); > httpClient.getState().setCredentials(AuthScope.ANY, > credentials); > > String url = "http://localhost:8080/images/tubu2.jpg"; > String fieldName = "./"; > File localFile = new File("C:/temp/test.jpg"); > String typeHint = "nt:file"; > > final Part[] parts = new Part[typeHint == null ? 1 : 2]; > parts[0] = new FilePart(fieldName, localFile); > if (typeHint != null) { > parts[1] = new StringPart(fieldName + "@TypeHint", typeHint); > } > > final PostMethod post = new PostMethod(url); > post.setFollowRedirects(false); > post.setRequestEntity(new MultipartRequestEntity(parts, > post.getParams())); > final int status = httpClient.executeMethod(post); > > System.out.println(Integer.toString(status)); > > } > > } > > > > Thanks, > > Andre >
