2016-07-22 27 views
0

Ich versuche, eine Anfrage mit einem kleinen Java-Programm zu tun, aber ich bin immer einen 400 - Bad Request als Antwort:Erste 400 - Bad Request-Java-Client

URI uri = new URIBuilder().setScheme("https") 
       .setHost("somehost.com") 
       .setPath("/API/v1/export").build(); 
     HttpPost post = new HttpPost(uri); 
     post.setHeader("X-API-ID", "myId"); 
     post.setHeader("Accept", "application/json"); 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("format", "csv")); 
     params.add(new BasicNameValuePair("userId", "userId")); 
     post.setEntity(new UrlEncodedFormEntity(params)); 
     JsonNode responseJson = sendResponseEngineRequest(post); 

Diese responseJson die liefert folgende Wert:

{ "meta": { "httpstatus":. "400 - Bad Request", "Fehler": { "errormessage": "Invalid Content-Type erwartet = application/json gefunden = application/x-www-form-urlencoded "," errorCode ":" RP_0.1 "}}}

Vielen Dank im Voraus.

Antwort

1

Die Antwort liegt buchstäblich in dem Fehler, den Sie bekommen.

Sie geben Sie nur post.setHeader("Accept", "application/json"); akzeptieren wird und der Fehler ist Ihnen zu sagen, dass, was Sie anfordernden ist found=application/x-www-form-urlencoded

Wenn Sie die Kontrolle über den Endpunkt haben sind Sie Daten anfordert, ändern sie application/json. Wenn Sie post.setHeader("Accept", "application/x-www-form-urlencoded");

+0

Könnten Sie mir bitte sagen, wie ich „application/json“ anfordern können und auch, wie ich „application/x-www-form-urlencoded“ das ist, bin anfordernden nicht klar für mich. –

+0

Haben Sie die Kontrolle über den Host, von dem Sie Daten anfordern? – blur0224

+0

Naja, nicht wirklich, ist ein Host von einem Provider. –

0

nicht post.setHeader("Accept", "application/json"); ändern Da dies eine POST-Anforderung ist, können Sie beide Accept und Content-Type Header zur Verfügung stellen müssen.

Accept: Was Sie erwarten zu erhalten. Content-Type: Was Sie an den Server zu senden

post.setHeader("Accept", "application/json"); 
post.setHeader("Content-Type", "application/json");