Skip to content

Commit a110d79

Browse files
author
Alex Rodriguez
committed
SOAP response body not set as text (#9)
1 parent 2713038 commit a110d79

File tree

4 files changed

+69
-2
lines changed

4 files changed

+69
-2
lines changed

src/main/java/com/enonic/lib/http/client/ResponseMapper.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ public final class ResponseMapper
2828
ImmutableSet.of( "okhttp-received-millis", "okhttp-selected-protocol", "okhttp-sent-millis" );
2929

3030
private final static ImmutableList<MediaType> TEXT_CONTENT_TYPES =
31-
ImmutableList.of( MediaType.ANY_TEXT_TYPE, MediaType.create( "application", "xml" ), MediaType.create( "application", "json" ) );
31+
ImmutableList.of( MediaType.ANY_TEXT_TYPE, MediaType.create( "application", "xml" ), MediaType.create( "application", "json" ),
32+
MediaType.create( "application", "javascript" ), MediaType.create( "application", "soap+xml" ),
33+
MediaType.create( "application", "xml" ) );
3234

3335
private final Response response;
3436

@@ -136,7 +138,8 @@ private boolean isTextContent()
136138
try
137139
{
138140
final MediaType mediaType = MediaType.parse( contentType );
139-
return TEXT_CONTENT_TYPES.stream().anyMatch( mediaType::is );
141+
final String subType = mediaType.subtype() == null ? "" : mediaType.subtype().toLowerCase();
142+
return TEXT_CONTENT_TYPES.stream().anyMatch( mediaType::is ) || subType.contains( "xml" ) || subType.contains( "json" );
140143
}
141144
catch ( IllegalArgumentException e )
142145
{

src/test/java/com/enonic/lib/http/client/ResponseMapperTest.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,48 @@ public void serializeNoContentType()
5252

5353
JsonAssert.assertJson( getClass(), "response-no-type", mapper );
5454
}
55+
56+
@Test
57+
public void serializeSoapContentType()
58+
throws Exception
59+
{
60+
final Request.Builder request = new Request.Builder();
61+
request.url( "http://host/some/path" );
62+
request.get();
63+
64+
final Response.Builder response = new Response.Builder();
65+
final ResponseBody body = ResponseBody.create( MediaType.parse( "application/soap+xml; charset=utf-8" ),
66+
"<?xml version=\"1.0\" encoding=\"utf-8\"?><body/>" );
67+
response.body( body );
68+
response.code( 200 );
69+
response.message( "Ok" );
70+
response.protocol( Protocol.HTTP_1_1 );
71+
response.request( request.build() );
72+
response.header( "Content-Type", "application/soap+xml; charset=utf-8" );
73+
ResponseMapper mapper = new ResponseMapper( response.build() );
74+
75+
JsonAssert.assertJson( getClass(), "response-soap", mapper );
76+
}
77+
78+
@Test
79+
public void serializeXmlContentType()
80+
throws Exception
81+
{
82+
final Request.Builder request = new Request.Builder();
83+
request.url( "http://host/some/path" );
84+
request.get();
85+
86+
final Response.Builder response = new Response.Builder();
87+
final ResponseBody body = ResponseBody.create( MediaType.parse( "application/mathml+xml; charset=utf-8" ),
88+
"<?xml version=\"1.0\" encoding=\"utf-8\"?><body/>" );
89+
response.body( body );
90+
response.code( 200 );
91+
response.message( "Ok" );
92+
response.protocol( Protocol.HTTP_1_1 );
93+
response.request( request.build() );
94+
response.header( "Content-Type", "application/mathml+xml; charset=utf-8" );
95+
ResponseMapper mapper = new ResponseMapper( response.build() );
96+
97+
JsonAssert.assertJson( getClass(), "response-xml", mapper );
98+
}
5599
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"status": 200,
3+
"message": "Ok",
4+
"body": "<?xml version=\"1.0\" encoding=\"utf-8\"?><body/>",
5+
"bodyStream": "ByteSource.wrap(3C3F786D6C2076657273696F6E3...)",
6+
"contentType": "application/soap+xml; charset=utf-8",
7+
"headers": {
8+
"Content-Type": "application/soap+xml; charset=utf-8"
9+
}
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"status": 200,
3+
"message": "Ok",
4+
"body": "<?xml version=\"1.0\" encoding=\"utf-8\"?><body/>",
5+
"bodyStream": "ByteSource.wrap(3C3F786D6C2076657273696F6E3...)",
6+
"contentType": "application/mathml+xml; charset=utf-8",
7+
"headers": {
8+
"Content-Type": "application/mathml+xml; charset=utf-8"
9+
}
10+
}

0 commit comments

Comments
 (0)