String userPassword = username + ":" + password;
String encoded = new sun.misc.BASE64Encoder().encode(userPassword.getBytes());
URLConnection uc = url.openConnection();
uc.setRequestProperty("Authorization", "Basic " + encoded); // <--- Da baust Du den Header ein
uc.connect();
putMethod.setRequestHeader( new Header("Authorization", "Basic cdEmb3J0ZXI6301jOut0buE=") );
<html>
<head>
<title>Apache Tomcat/6.0.24 - Error report</title>
</head>
<body>
<h1>HTTP Status 401 - UserDetailsService returned null, which is an interface contract violation</h1>
<HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>UserDetailsService returned null, which is an interface contract violation</u></p><p><b>description</b> <u>This request requires HTTP authentication (UserDetailsService returned null, which is an interface contract violation).</u></p>
<HR size="1" noshade= "noshade"><h3>Apache Tomcat/6.0.24</h3>
</body>
</html>
Ich weiss grad nicht was du meinst? Was soll ich schreiben?..die Bitte: "Falls Du ein Framework à la HttpClient benutzt, schreibe bitte welches."
putMethod.setRequestHeader
/*
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/methods/PutMethod.java,v 1.26 2004/04/18 23:51:37 jsdever Exp $
* $Revision: 601 $
* $Date: 2011-03-07 08:50:21 +0100 (Mo, 07 Mrz 2011) $
*
* ====================================================================
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* [url]http://www.apache.org/licenses/LICENSE-2.0[/url]
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.httpclient.methods;
/**
* Implements the HTTP PUT method.
* <p>
* The HTTP PUT method is defined in section 9.6 of
* <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</a>:
* <blockquote>
* The PUT method requests that the enclosed entity be stored under the
* supplied Request-URI. If the Request-URI refers to an already
* existing resource, the enclosed entity SHOULD be considered as a
* modified version of the one residing on the origin server.
* </blockquote>
* </p>
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
* @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
* @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
* @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
*
* @version $Revision: 601 $
* @since 1.0
*/
public class PutMethod extends EntityEnclosingMethod {
// ----------------------------------------------------------- Constructors
/**
* No-arg constructor.
*
* @since 1.0
*/
public PutMethod() {
super();
}
/**
* Constructor specifying a URI.
*
* @param uri either an absolute or relative URI
*
* @since 1.0
*/
public PutMethod(String uri) {
super(uri);
}
// --------------------------------------------------------- Public Methods
/**
* Return <tt>"PUT"</tt>.
* @return <tt>"PUT"</tt>
*
* @since 2.0
*/
public String getName() {
return "PUT";
}
}
Java:putMethod.setRequestHeader( new Header("Authorization", "Basic cdEmb3J0ZXI6301jOut0buE=") );
putMethod.setDoAuthentication(false);
putMethod.setDoAuthentication(true);