Ich möchte eine POST-Anfrage an einen Server erstellen, die eine Authentifizierung erfordert. Ich habe versucht, die folgende Methode zu verwenden:
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 empfängt die Autorisierungsdaten nicht. Die Zeile, die die Autorisierungsdaten hinzufügen soll, ist die folgende:
conn.setRequestProperty ("Authorization", "Basic " + encodedString);
und die Linie
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
löst ebenfalls eine IOException aus.
Jedenfalls wäre ich sehr dankbar, wenn jemand eine Korrektur der obigen Logik vorschlagen könnte, um die Autorisierung mittels POST mit UrlConnection zu ermöglichen.
aber offensichtlich funktioniert es nicht so, wie es sollte, obwohl, wenn die gleiche Logik für GET-Anforderungen verwendet wird, alles gut funktioniert.