# J2ME 1.4 + BasicAuth



## lespaul (17. Aug 2012)

Hallo,

ich habe einen Server an dem ich Daten mit meinem Java-Programm übermitteln will.
In dem Bild sieht man eine erfolgreiche Übermittlung mit einem Rest-Client.

Wie kann ich Header+Value mit o.g. Java einstellen?

Vielen dank 
Lespaul


----------



## nillehammer (17. Aug 2012)

Wenn Du direkt mit URLConnection arbeitest, kannst Du den Header selbst setzen:

```
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();
```
Falls Du ein Framework à la _HttpClient_ benutzt, schreibe bitte welches. Da wird es auch eine spezifische Methode geben...


----------



## lespaul (20. Aug 2012)

Hallo, ich habe habe versucht einen Header mit folgendem hinzuzufügen:

```
putMethod.setRequestHeader( new Header("Authorization", "Basic cdEmb3J0ZXI6301jOut0buE=") );
```
Der Server antowrtet:


> <html>
> <head>
> <title>Apache Tomcat/6.0.24 - Error report</title>
> </head>
> ...



???:L


----------



## nillehammer (20. Aug 2012)

Ok, Du benutzt offensichtlich keine URLConnection, sondern ein Framework. Darum noch mal die Bitte: "Falls Du ein Framework à la HttpClient benutzt, schreibe bitte welches."


----------



## lespaul (20. Aug 2012)

nillehammer hat gesagt.:


> ..die Bitte: "Falls Du ein Framework à la HttpClient benutzt, schreibe bitte welches."


Ich weiss grad nicht was du meinst? Was soll ich schreiben?


----------



## nillehammer (20. Aug 2012)

```
putMethod.setRequestHeader
```
Das kommt so ja nicht aus dem Standard JSE. Da hast Du offensichtlich eine lib eingebunden, deren Funktionen/Klassen du nutzt. Welche ist das?


----------



## lespaul (20. Aug 2012)

Achso, ja die PutMethod zB. ist in org.apache.commons.httpclient.methods.PutMethod


```
/*
 * $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";
    }
}
```


----------



## nillehammer (20. Aug 2012)

Du benutzt eine Version, die schon End of life ist. Falls es geht, steige auf die aktuelle Version (HttpComponents HttpClient Overview) um. Falls das nicht geht, hier findest Du zu der von Dir verwendeten Version eine ausführliche Anleitung (inkl. Hingergrundinfos zu HTTP-Auth): HttpClient - HttpClient Authentication Guide
Besser kann ich es auch nicht erklären.


----------



## lespaul (23. Aug 2012)

lespaul hat gesagt.:


> ```
> putMethod.setRequestHeader( new Header("Authorization", "Basic cdEmb3J0ZXI6301jOut0buE=") );
> ```



Als ich dann die

```
putMethod.setDoAuthentication(false);
```
auf

```
putMethod.setDoAuthentication(true);
```
umgestellt hatte, ging es


----------

