Java: Wie kann ich UrlConnection verwenden, um eine Anfrage mit Autorisierung zu stellen?

Möchte ich generieren, POST-Anforderung an einen server, der eine Authentifizierung erfordert. Ich habe versucht, verwenden Sie die folgende Methode:

private synchronized String CreateNewProductPOST (String urlString, String encodedString, String title, String content, Double price, String tags) {

    String data = "product[title]=" + URLEncoder.encode(title) +
                "&product[content]=" + URLEncoder.encode(content) + 
                "&product[price]=" + URLEncoder.encode(price.toString()) +
                "&tags=" + tags;
    try {
        URL url = new URL(urlString);
        URLConnection conn;
        conn = url.openConnection();
        conn.setRequestProperty ("Authorization", "Basic " + encodedString);
        conn.setDoOutput(true);
        conn.setDoInput(true);
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush(); 
        //Get the response 
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
        String line; 
        while ((line = rd.readLine()) != null) { 
            //Process line... 
            } 
        wr.close(); 
        rd.close(); 
        return rd.toString();
    } catch (MalformedURLException e) {

        e.printStackTrace();
        return e.getMessage();
    }
    catch (IOException e) {

        e.printStackTrace();
        return e.getMessage();
    } 
}

aber der server doesn ' T erhalten die Genehmigung der Daten. Die Zeile, die Sie ausführen soll, fügen Sie die Autorisierungsdaten ist folgende:

conn.setRequestProperty ("Authorization", "Basic " + encodedString);

ist und die Linie

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

wirft eine IOException.

Trotzdem wäre ich sehr dankbar, wenn jemand könnte vorschlagen, keine Lösung von der Logik, die oben zum aktivieren der Autorisierung über POST mit UrlConnection.

aber offensichtlich funktioniert es nicht wie es soll, obwohl, wenn die gleiche Logik verwendet, für die GET-Anforderung funktioniert alles einwandfrei.

InformationsquelleAutor der Frage Niko Gamulin | 2010-01-08

Schreibe einen Kommentar