2016-05-10 85 views
1

我有一個django rest框架Web服務,可以正常使用httpie和firefox:當我用httpie請求時我有一個json格式的答案,並且當我用firefox請求一個html格式化一個(httpie是一個http客戶端)。 現在我正在構建Java API來與服務進行通信。我正在使用URL類來執行請求。 如果我不覆蓋content-type屬性,我可以從服務器接收html格式的答案。所以,我看着httpie如何重寫此屬性,也做了相同的:Django rest框架服務的Java http請求拋出http 406異常

connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); 
connection.setRequestProperty("Accept", "*\\*"); 

現在使用HTTP 406錯誤,這意味着客戶端無法接受的答案通信終端。

如果我只用了內容類型屬性我沒有錯誤,但仍然HTML格式的答案

有誰知道如何解決呢?

編輯(添加請求報頭):

httpie: GET /match/39.3280114/16.241917599999965/0/5/ HTTP/1.1 主機:127.0.0.1:8001 連接:保活 接受 - 編碼:gzip的,放氣 接受:/ 的User-Agent:HTTPie/0.9.3

Java的API GET /match/39.3280114/16.241917599999965/0/5/ HTTP/1.1 主持人:127.0。 0.1:8001 接受編碼:gzip,緊縮 接受:** 的User-Agent:Java的API

解決:我用錯了斜槓接受財產

+0

你能告訴請求的完整標題? –

回答

1

Accept頭的格式不正確。它應該是:

Accept: */* 

請參閱RFC 7231 § 5.3.2

然而,*/*意味着「任何媒體類型。」如果你真的想要一個特定的媒體類型(JSON),您應要求其:

Accept: application/json 
+0

這是問題,謝謝。 – user3415993

相關問題