2016-07-22 77 views
0

我試圖用一個小型的Java程序做了要求,但我得到一個400 - 錯誤的請求作爲應答:獲得400 - 錯誤的請求Java客戶端

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); 

responseJson返回以下值:

{ 「元」:{ 「則httpStatus」: 「400 - 錯誤 請求」, 「錯誤」:{ 「的errorMessage」:「無效的Content-Type 預期=應用程序/ JSON 發現= application/x-www-form-urlencoded「,」errorCode「:」RP_0.1「}}}

在此先感謝。

回答

1

答案是字面上在你得到的錯誤。

您可以指定只接受post.setHeader("Accept", "application/json");和錯誤是告訴你什麼你的要求是found=application/x-www-form-urlencoded

如果你有超過你請求的數據端點控制,將其更改爲應用程序/ JSON。如果你不改變post.setHeader("Accept", "application/json");post.setHeader("Accept", "application/x-www-form-urlencoded");

+0

你能告訴我,我怎麼可以要求「應用/ JSON」和以及我如何申請「應用程序/ x-WWW的形式,進行了urlencoded」那不是清楚爲了我。 –

+0

你有控制你要求數據的主機嗎? – blur0224

+0

嗯,不是真的,是提供者的主機。 –

0

由於這是一個POST請求,則可能需要同時提供AcceptContent-Type頭。

Accept:你期待得到什麼。 Content-Type:要發送到服務器什麼

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