Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAX-RSAPI故障响应转换为java_Java_Api_Rest_Jax Rs - Fatal编程技术网

JAX-RSAPI故障响应转换为java

JAX-RSAPI故障响应转换为java,java,api,rest,jax-rs,Java,Api,Rest,Jax Rs,我正在访问一个API,它返回404错误和错误消息。我想在java代码中使用确切的消息。我不知道如何访问它 正常反应来自元素 但这是以错误的形式出现的,我想访问其中的消息。请建议使用哪一类。或任何样本代码窃贼 以下是不同格式的回答示例 XML响应: <Fault xmlns="http://abc.cu.ms/api/resource"> <Message>Service not found</Message> </Fault> 原始: 无论

我正在访问一个API,它返回404错误和错误消息。我想在java代码中使用确切的消息。我不知道如何访问它

正常反应来自元素

但这是以错误的形式出现的,我想访问其中的消息。请建议使用哪一类。或任何样本代码窃贼

以下是不同格式的回答示例

XML响应:

<Fault xmlns="http://abc.cu.ms/api/resource">
   <Message>Service not found</Message>
</Fault>
原始:


无论您使用的是什么JAX-RS实现,它都应该有一个客户端API。如果您使用JAX-RS2实现,那么应该有一个标准的客户端API。如果您使用的是JAX-RS1实现,那么客户机API将特定于该实现(并且您可能需要导入jar依赖项)

对于JAX-RS2实现,您可以这样做

Client client = ClientBuilder.newBuilder();
WebTarget target = client.target(url);
Response response = target.request.accept(MediaType.APPLICATION_XML).get();
Fault fault = response.readEntity(Fault.class);
String message = fault.getMessage();
您的
Fault
类可能看起来很简单

@XmlRootElement(name = "Fault")
public class Fault {
    private String message;
    @XmlElement(name = "Message")
    public String getMessage() {
        return message;
    } 
    public void setMessage(String message) {
        this.message = message;
    }
}
对于xml中的名称空间,只需将
package info.java
文件添加到
Fault
类所在的包中即可。看起来像

@XmlSchema(
    namespace = "http://www.example.org/package",
    elementFormDefault = XmlNsForm.QUALIFIED) 

package thepackage.of.your.fault.model;

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
您可以阅读有关名称空间的更多信息

有关您的实现的更多信息,请提供有关您正在使用的JAX-RS实现的更多信息


对于JSON,您可能需要添加/注册一个提供程序,但我同样需要知道您正在使用什么实现来帮助实现它

你说得对!我对这件事不熟悉。我已经看过所有的教程,现在我明白了。你的评论很有帮助。谢谢
@XmlRootElement(name = "Fault")
public class Fault {
    private String message;
    @XmlElement(name = "Message")
    public String getMessage() {
        return message;
    } 
    public void setMessage(String message) {
        this.message = message;
    }
}
@XmlSchema(
    namespace = "http://www.example.org/package",
    elementFormDefault = XmlNsForm.QUALIFIED) 

package thepackage.of.your.fault.model;

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;