Ich habe eine Java-Anwendung mit dem folgenden Code. Ich versuche, einen REST-Webdienst mithilfe von HttpClient POST aufzurufen. Ich muss einen benutzerdefinierten Header "Auth" für die Authentifizierung senden. Der Wert des Headers ist die verschlüsselten Credentials, die durch ein ":" getrennt sind.HTTP-Fehler 400. Die Anfrage hat einen ungültigen Header-Namen
String strAuth = DoAESEncrypt("userid:pwd");
String strContent = DoAESEncrypt("{\"Name\":Tester,\"Id\":\"123\",\"NickName\":null,\"IsLocked\":false}");
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("https://domainname/servicename");
post.addHeader("auth",strAuth);
post.addHeader("Content-Type", "application/json");
StringEntity input = new StringEntity(strContent);
post.setEntity(input);
HttpResponse response = client.execute(post);
The DoAESEncrypt ist eine Funktion, die die Eingabezeichenfolge und gibt die Chiffre verschlüsselt. Allerdings, wenn ich diesen Code ausführen, ich die unten Fehlermeldung erhalten, wo ich die Aussage client.execute habe:
HTTP Error 400. Die Anfrage enthält einen ungültigen Header-Namen
Allerdings, wenn ich hart -Code den unten Header mit dem verschlüsselten Cipher ich die gleiche DoAESEncrypt Funktion erzeugt mit, es funktioniert gut:
post.addHeader("auth","5PE7vNMYVFJT/tgYo7TGuPO05lqMQx5w3BAJKDS567A73vM0TYFmWO5tP=");
Sie für diese Antwort suchen sind nicht folgen? http://stackoverflow.com/questions/7682514/android-http-post-request-to-iis-7-returns-bad-requestinvalid-header-name – Lubo
@Lubo Ich habe kein Problem mit der Einstellung Inhaltstyp. Es funktioniert so, wie ich es jetzt mache. Das Problem ist jedoch mit dem benutzerdefinierten Header "Auth". – Thomas
Wenn Sie den Wert von 'auth' fest codieren, funktioniert es, aber wenn Sie' strAuth' verwenden, ist das nicht? Was ist der Wert von 'strAuth'? – Andreas