gpt4 book ai didi

java - SCM 管理器 REST POST xml 返回 415 不支持的媒体类型

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:45 25 4
gpt4 key购买 nike

我正在尝试使用 SCM Manager (v1.46) 通过 REST 发布 XML 内容。从命令行使用 cURL 效果很好:

call curl -XPOST -u scmadmin:scmadmin -H "content-type: application/xml" -d "<users><name>abc</name><active>true</active><password>abc</password><displayName>abc</displayName><mail>abc@abc.com</mail><type>xml</type><lastModified/><creationDate/><admin>false</admin></users>" http://localhost:8080/scm/api/rest/users.xml

并且用户abc已创建。我使用 Jersey 的 Java 客户端从 SCM 管理器收到 415 Unsupported Media Type 响应。客户端看起来像这样:

...

public WebResource getService(String p_url, String p_user, String p_password) {
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.addFilter(new HTTPBasicAuthFilter(p_user, p_password));
return client.resource(getBaseURI(p_url));
}

...

public Document postXmlDocument(String p_url, String p_user, String p_password, String p_xml) {
WebResource service = getService(p_url, p_user, p_password);
Document xmlDocument = null;
ClientResponse response = service.accept(MediaType.APPLICATION_XML).post(ClientResponse.class, p_xml);
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
String output = response.getEntity(String.class);
System.out.println("Server response : \n");
System.out.println(output);
return xmlDocument;
}

其中 p_xml 获取与 cURL 命令中相同的内容。使用 MediaType.APPLICATION_XML 设置接受的媒体类型还不够吗?使用的 Jersey 有这个 Maven 坐标:

<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.12</version>
</dependency>

任何提示都会很好。SK

最佳答案

Accept 仅表示您想要返回的类型。您需要设置 Content-Type 来告诉服务器您要发送的类型。如果你不这样做,它就会默认为某种意想不到的类型。例如,如果您发送字符串,它可能默认为 Content-Type: text/plain。该服务器无法将纯文本转换为您的 POJO,因此您会收到 415 不支持的媒体类型。

您调用type(String|MediaType)设置内容类型,或使用 header(String, String)

service.accept(MediaType.APPLICATION_XML).type("application/xml")..

service.accept(MediaType.APPLICATION_XML).header("Content-Type", "application/xml")...

关于java - SCM 管理器 REST POST xml 返回 415 不支持的媒体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32775536/

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