2015-09-27 44 views
0

我有一個帶有一些靜態內容的Web應用程序。例如,我有一個發佈在http://localhost/images/Head.png的圖像。Png的MediaType。 HTTP請求

現在,我正在對此映像執行Http請求。

ResponseEntity<byte[]> entity = new TestRestTemplate().getForEntity("http://localhost/images/Head.png", byte[].class);` 

我想知道哪個內容有這個實體。它應該是image/png,但它不是。我在這裏得到一個例外:

assertEquals("Wrong content type:\n" + entity.getHeaders().getContentType(), 
       MediaType.valueOf("image/png"), entity.getHeaders().getContentType());` 

我應該是哪種內容類型?

謝謝。

+0

您的代碼是否在公開回購?你能提供一個鏈接嗎? –

+0

你可以看看它[這裏](https://github.com/Santi-7/hello/blob/master/src/test/java/es/unizar/webeng/hello/SystemTests.java) –

+0

爲什麼代碼你提到的是評論?另外,哪個是JUnit測試的輸出?甚至,爲什麼不在屏幕上打印內容類型的值。如果您發現解決方案,請親自回答此問題並將其標記爲已關閉! –

回答

0

如果運行

$ gradle check 

控制檯報告的東西如下

FAILURE: Build failed with an exception 
* What went wrong: 
Execution failed for task ':test'. 
> There were failing tests. See the report at: 
    (...)/hello-master/build/reports/tests/index.html 

BUILD FAILED 

如果你用瀏覽器打開該文件,你可以看到這一點:

enter image description here

如果您點擊系統測試可以看到

enter image description here

這意味着,預期的內容類型是圖像/ PNG;字符集= UTF-8。這種內容類型沒有錯,但怪癖。這是因爲默認情況下Spring Boot被迫將配置的字符集添加到內容類型中。您可以在application.properties中將spring.http.encoding.force的屬性設置爲false,因此返回的內容類型將爲image/png。請小心,因爲此設置可以修改現有測試的行爲。

+0

它的工作!感謝您提供調試建議並解決它。 –