gpt4 book ai didi

java - 带有 MessageBodyWriter 的 JerseyTest 客户端不会将 header 传递到我的 MessageBodyReader 服务器端

转载 作者:行者123 更新时间:2023-11-30 10:50:38 24 4
gpt4 key购买 nike

使用 JerseyTest 时,我的 header 未从客户端正确传递到服务器。

服务端和客户端都分别配置了MessageBodyWriterMessageBodyReaderJerseyTest::configureJerseyTest::configureClient.

我的 MessageBodyWriter 添加一些自定义 header 以进行查询:

@Override
public void writeTo(MyPojo myPojo, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException {
httpHeaders.put("X-Custom-Header", singletonList(myPojo.header()));
}

但是当 MessageBodyReader 被服务器命中时,它只包含标准 header 。

关于我遗漏了什么的任何线索?

最佳答案

好的,这似乎是 InMemoryConnector 的错误:

public ClientResponse apply(final ClientRequest clientRequest) {
PropertiesDelegate propertiesDelegate = new MapPropertiesDelegate();

final ContainerRequest containerRequest = new ContainerRequest(baseUri,
clientRequest.getUri(), clientRequest.getMethod(),
null, propertiesDelegate);

containerRequest.getHeaders().putAll(clientRequest.getStringHeaders());

final ByteArrayOutputStream clientOutput = new ByteArrayOutputStream();
if (clientRequest.getEntity() != null) {
clientRequest.setStreamProvider(new OutboundMessageContext.StreamProvider() {
@Override
public OutputStream getOutputStream(int contentLength) throws IOException {
final MultivaluedMap<String, Object> clientHeaders = clientRequest.getHeaders();
if (contentLength != -1 && !clientHeaders.containsKey(HttpHeaders.CONTENT_LENGTH)) {
containerRequest.getHeaders().putSingle(HttpHeaders.CONTENT_LENGTH, String.valueOf(contentLength));
}
return clientOutput;
}
});

所有标准 header 都设置为:

containerRequest.getHeaders().putAll(clientRequest.getStringHeaders());

但是如果您提供自定义 header ,它们会被读取但不会添加到 containerRequest :

final MultivaluedMap<String, Object> clientHeaders = clientRequest.getHeaders();

还有https://java.net/jira/browse/JERSEY-2341建议不会很快修复。

关于java - 带有 MessageBodyWriter 的 JerseyTest 客户端不会将 header 传递到我的 MessageBodyReader 服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com