Package com.jcabi.http.response
Class XmlResponse
- java.lang.Object
-
- com.jcabi.http.response.XmlResponse
-
- All Implemented Interfaces:
Response
@Immutable public final class XmlResponse extends Object
XML response.This response decorator is able to parse HTTP response body as an XML document and manipulate with it afterwords, for example:
String name = new JdkRequest("http://my.example.com") .header(HttpHeaders.ACCEPT, MediaType.TEXT_XML) .fetch() .as(XmlResponse.class) .assertXPath("/user/name") .xml() .xpath("/user/name/text()") .get(0);
In HATEOAS responses it is convenient to use this decorator's method
rel(String)
in order to follow the link provided in<link>
XML element, for example:String data = new JdkRequest("http://my.example.com") .header(HttpHeaders.ACCEPT, MediaType.TEXT_XML) .fetch() .as(XmlResponse.class) .rel("/user/links/link[@rel='next']/@href") .fetch() .body();
The class is immutable and thread-safe.
- Since:
- 0.8
-
-
Constructor Summary
Constructors Constructor Description XmlResponse(Response resp)
Public ctor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T extends Response>
Tas(Class<T> type)
Convert it to another type, by encapsulation.XmlResponse
assertXPath(String xpath)
Verifies HTTP response body XHTML/XML content against XPath query, and throwsAssertionError
in case of mismatch.Request
back()
Get back to the request it's related to.byte[]
binary()
Raw body as a an array of bytes.String
body()
Get body as a string, assuming it'sUTF-8
(if there is something else that can't be translated into a UTF-8 string a runtime exception will be thrown).Map<String,List<String>>
headers()
Get a collection of all headers.String
reason()
Get status line reason phrase.XmlResponse
registerNs(String prefix, String uri)
Register this new namespace.Request
rel(String query)
Follow XML link.int
status()
Get status of the response as a positive integer number.String
toString()
com.jcabi.xml.XML
xml()
Get XML body.
-
-
-
Constructor Detail
-
XmlResponse
public XmlResponse(Response resp)
Public ctor.- Parameters:
resp
- Response
-
-
Method Detail
-
xml
public com.jcabi.xml.XML xml()
Get XML body.- Returns:
- XML body
-
registerNs
public XmlResponse registerNs(String prefix, String uri)
Register this new namespace.- Parameters:
prefix
- Prefix to useuri
- Namespace URI- Returns:
- This object
-
assertXPath
public XmlResponse assertXPath(String xpath)
Verifies HTTP response body XHTML/XML content against XPath query, and throwsAssertionError
in case of mismatch.- Parameters:
xpath
- Query to use- Returns:
- This object
-
rel
public Request rel(String query)
Follow XML link.- Parameters:
query
- XPath query to fetch new URI- Returns:
- New request
-
back
public final Request back()
Description copied from interface:Response
Get back to the request it's related to.
-
status
public final int status()
Description copied from interface:Response
Get status of the response as a positive integer number.
-
reason
public final String reason()
Description copied from interface:Response
Get status line reason phrase.
-
headers
public final Map<String,List<String>> headers()
Description copied from interface:Response
Get a collection of all headers.
-
body
public String body()
Description copied from interface:Response
Get body as a string, assuming it'sUTF-8
(if there is something else that can't be translated into a UTF-8 string a runtime exception will be thrown).DISCLAIMER: The only encoding supported here is UTF-8. If the body of response contains any chars that can't be used and should be replaced with a "replacement character", a
RuntimeException
will be thrown. If you need to use some other encodings, useResponse.binary()
instead.
-
binary
public final byte[] binary()
Description copied from interface:Response
Raw body as a an array of bytes.
-
-