gpt4 book ai didi

java - JAX-WS 调度请求设置内容类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:17 29 4
gpt4 key购买 nike

我正在尝试使用服务/调度机制来发布 JAX-RS 资源。问题是传出请求的 Content-Type 被锁定为 text/xml。我看不到将其更改为其他类型的方法,例如 application/xml

RESTfull 网络服务仅使用 application/xmlapplication/json。这是我使用的代码:

public static void main(String[] args) {
QName qName = new QName("GREETINGS");

Service service = Service.create(qName);
service.addPort(qName, HTTPBinding.HTTP_BINDING, "http://localhost:8081/gf-ws-1/resources/greetings");

// change headers of the outgoing request
Map<String, Object> headers = new HashMap<String, Object>();
headers.put("Content-Type", Arrays.asList(new String[] {"application/xml"}));
headers.put("Accept", Arrays.asList(new String[] {"zoo"}));
headers.put("foo", Arrays.asList(new String[] {"bar"}));

Dispatch<Source> dispatch = service.createDispatch(qName, Source.class, Service.Mode.PAYLOAD);
dispatch.getRequestContext().put(MessageContext.HTTP_REQUEST_METHOD, "POST");
dispatch.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, headers);

dispatch.invokeOneWay(new StreamSource(new StringReader("<?xml version='1.0' encoding='UTF-8'?><greeting><value>Hello World!</value></greeting>")));

// get the response code: [HTTP/1.1 415 Unsupported Media Type] because of content type
System.out.println(((Map<String, Object>) dispatch.getResponseContext().get(MessageContext.HTTP_RESPONSE_HEADERS)).get(null));
}

Accept header 被修改为zoofoo header 添加了值bar,但是Content-Type 保持不变。我想我可以使用过滤器并根据某些条件修改 Content-Type,或者甚至根据 foo header 修改 Content-Type,但这似乎违反直觉。

这里是请求的所有 header :

POST /gf-ws-1/resources/greetings HTTP/1.1
Accept: zoo
Content-Type: text/xml
foo: bar
User-Agent: Metro/2.2.0-1 (tags/2.2.0u1-7139; 2012-06-02T10:55:19+0000) JAXWS-RI/2.2.6-2 JAXWS/2.2 svn-revision#unknown
Host: localhost:8080
Connection: keep-alive
Content-Length: 86

感谢任何帮助。

最佳答案

如果要自定义整个消息,则必须使用 Service.Mode.MESSAGE 而不是 Service.Mode.PAYLOAD。

Content-Type 是消息相关的属性。

关于java - JAX-WS 调度请求设置内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910562/

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