Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
1261e644
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1261e644
编写于
11月 08, 2019
作者:
R
Rossen Stoyanchev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Minor refactoring
Apply default Accept header for HttpUrlConnection only. See gh-23855
上级
afae8c30
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
48 addition
and
38 deletion
+48
-38
spring-web/src/main/java/org/springframework/http/client/SimpleBufferingClientHttpRequest.java
...amework/http/client/SimpleBufferingClientHttpRequest.java
+8
-0
spring-web/src/main/java/org/springframework/web/client/RestTemplate.java
...ain/java/org/springframework/web/client/RestTemplate.java
+0
-3
spring-web/src/test/java/org/springframework/http/client/SimpleClientHttpRequestFactoryTests.java
...work/http/client/SimpleClientHttpRequestFactoryTests.java
+4
-1
spring-web/src/test/java/org/springframework/web/client/RestTemplateTests.java
...ava/org/springframework/web/client/RestTemplateTests.java
+36
-34
未找到文件。
spring-web/src/main/java/org/springframework/http/client/SimpleBufferingClientHttpRequest.java
浏览文件 @
1261e644
...
...
@@ -91,6 +91,14 @@ final class SimpleBufferingClientHttpRequest extends AbstractBufferingClientHttp
* @param headers the headers to add
*/
static
void
addHeaders
(
HttpURLConnection
connection
,
HttpHeaders
headers
)
{
String
method
=
connection
.
getRequestMethod
();
if
(
method
.
equals
(
"PUT"
)
||
method
.
equals
(
"DELETE"
))
{
if
(!
StringUtils
.
hasText
(
headers
.
getFirst
(
HttpHeaders
.
ACCEPT
)))
{
// Avoid "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
// from HttpUrlConnection which prevents JSON error response details.
headers
.
set
(
HttpHeaders
.
ACCEPT
,
"*/*"
);
}
}
headers
.
forEach
((
headerName
,
headerValues
)
->
{
if
(
HttpHeaders
.
COOKIE
.
equalsIgnoreCase
(
headerName
))
{
// RFC 6265
String
headerValue
=
StringUtils
.
collectionToDelimitedString
(
headerValues
,
"; "
);
...
...
spring-web/src/main/java/org/springframework/web/client/RestTemplate.java
浏览文件 @
1261e644
...
...
@@ -739,9 +739,6 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
if
(
requestCallback
!=
null
)
{
requestCallback
.
doWithRequest
(
request
);
}
if
((
method
==
HttpMethod
.
DELETE
||
method
==
HttpMethod
.
PUT
)
&&
request
.
getHeaders
().
getAccept
().
isEmpty
())
{
request
.
getHeaders
().
add
(
"Accept"
,
"*/*"
);
}
response
=
request
.
execute
();
handleResponse
(
url
,
method
,
response
);
return
(
responseExtractor
!=
null
?
responseExtractor
.
extractData
(
response
)
:
null
);
...
...
spring-web/src/test/java/org/springframework/http/client/SimpleClientHttpRequestFactoryTests.java
浏览文件 @
1261e644
...
...
@@ -22,6 +22,7 @@ import org.junit.jupiter.api.Test;
import
org.springframework.http.HttpHeaders
;
import
static
org
.
mockito
.
BDDMockito
.
given
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
times
;
import
static
org
.
mockito
.
Mockito
.
verify
;
...
...
@@ -31,9 +32,11 @@ import static org.mockito.Mockito.verify;
*/
public
class
SimpleClientHttpRequestFactoryTests
{
@Test
// SPR-13225
@Test
// SPR-13225
public
void
headerWithNullValue
()
{
HttpURLConnection
urlConnection
=
mock
(
HttpURLConnection
.
class
);
given
(
urlConnection
.
getRequestMethod
()).
willReturn
(
"GET"
);
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
set
(
"foo"
,
null
);
SimpleBufferingClientHttpRequest
.
addHeaders
(
urlConnection
,
headers
);
...
...
spring-web/src/test/java/org/springframework/web/client/RestTemplateTests.java
浏览文件 @
1261e644
...
...
@@ -492,45 +492,47 @@ public class RestTemplateTests {
verify
(
response
).
close
();
}
@Test
@Test
// gh-23740
public
void
headerAcceptAllOnPut
()
throws
Exception
{
MockWebServer
server
=
new
MockWebServer
();
server
.
enqueue
(
new
MockResponse
().
setResponseCode
(
500
).
setBody
(
"internal server error"
));
server
.
start
();
t
emplate
.
setRequestFactory
(
new
SimpleClientHttpRequestFactory
());
template
.
put
(
server
.
url
(
"/internal/server/error"
).
uri
(),
null
);
RecordedRequest
request
=
server
.
takeRequest
();
assertThat
(
request
.
getHeader
(
"Accept"
)).
isEqualTo
(
"*/*"
);
server
.
shutdown
();
t
ry
{
template
.
setRequestFactory
(
new
SimpleClientHttpRequestFactory
());
template
.
put
(
server
.
url
(
"/internal/server/error"
).
uri
(),
null
);
assertThat
(
server
.
takeRequest
().
getHeader
(
"Accept"
)).
isEqualTo
(
"*/*"
);
}
finally
{
server
.
shutdown
();
}
}
@Test
@Test
// gh-23740
public
void
keepGivenAcceptHeaderOnPut
()
throws
Exception
{
MockWebServer
server
=
new
MockWebServer
();
server
.
enqueue
(
new
MockResponse
().
setResponseCode
(
500
).
setBody
(
"internal server error"
));
server
.
start
();
try
{
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setAccept
(
Collections
.
singletonList
(
MediaType
.
APPLICATION_JSON
));
HttpEntity
<
String
>
entity
=
new
HttpEntity
<>(
null
,
headers
);
template
.
setRequestFactory
(
new
SimpleClientHttpRequestFactory
());
template
.
exchange
(
server
.
url
(
"/internal/server/error"
).
uri
(),
PUT
,
entity
,
Void
.
class
);
template
.
setRequestFactory
(
new
SimpleClientHttpRequestFactory
());
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setAccept
(
Collections
.
singletonList
(
MediaType
.
APPLICATION_JSON
));
HttpEntity
<
String
>
entity
=
new
HttpEntity
<>(
null
,
headers
);
template
.
exchange
(
server
.
url
(
"/internal/server/error"
).
uri
(),
PUT
,
entity
,
Void
.
class
);
RecordedRequest
request
=
server
.
takeRequest
();
RecordedRequest
request
=
server
.
takeRequest
();
final
List
<
List
<
String
>>
accepts
=
request
.
getHeaders
().
toMultimap
().
entrySet
().
stream
()
.
filter
(
entry
->
entry
.
getKey
().
equalsIgnoreCase
(
"accept"
))
.
map
(
Entry:
:
getValue
)
.
collect
(
Collectors
.
toList
());
.
filter
(
entry
->
entry
.
getKey
().
equalsIgnoreCase
(
"accept"
))
.
map
(
Entry:
:
getValue
)
.
collect
(
Collectors
.
toList
());
assertThat
(
accepts
).
hasSize
(
1
);
assertThat
(
accepts
.
get
(
0
)).
hasSize
(
1
);
assertThat
(
accepts
.
get
(
0
).
get
(
0
)).
isEqualTo
(
"application/json"
);
server
.
shutdown
();
assertThat
(
accepts
).
hasSize
(
1
);
assertThat
(
accepts
.
get
(
0
)).
hasSize
(
1
);
assertThat
(
accepts
.
get
(
0
).
get
(
0
)).
isEqualTo
(
"application/json"
);
}
finally
{
server
.
shutdown
();
}
}
@Test
...
...
@@ -579,19 +581,19 @@ public class RestTemplateTests {
verify
(
response
).
close
();
}
@Test
@Test
// gh-23740
public
void
headerAcceptAllOnDelete
()
throws
Exception
{
MockWebServer
server
=
new
MockWebServer
();
server
.
enqueue
(
new
MockResponse
().
setResponseCode
(
500
).
setBody
(
"internal server error"
));
server
.
start
();
t
emplate
.
setRequestFactory
(
new
SimpleClientHttpRequestFactory
());
template
.
delete
(
server
.
url
(
"/internal/server/error"
).
uri
());
RecordedRequest
request
=
server
.
takeRequest
();
assertThat
(
request
.
getHeader
(
"Accept"
)).
isEqualTo
(
"*/*"
);
server
.
shutdown
();
t
ry
{
template
.
setRequestFactory
(
new
SimpleClientHttpRequestFactory
());
template
.
delete
(
server
.
url
(
"/internal/server/error"
).
uri
());
assertThat
(
server
.
takeRequest
().
getHeader
(
"Accept"
)).
isEqualTo
(
"*/*"
);
}
finally
{
server
.
shutdown
();
}
}
@Test
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录