Merge pull request #40 from jpinsonault/tk-182-illegal-arg-exception-on-204-response

(TK-182) Illegal argument exception on 204 response
This commit is contained in:
Jeremy Barlow 2015-04-24 12:07:02 -07:00
commit 146d2fb4bc
4 changed files with 24 additions and 3 deletions

View file

@ -199,7 +199,9 @@
(defmethod coerce-body-type :text
[resp]
(let [charset (or (get-in resp [:content-type-params :charset] "UTF-8"))]
(assoc resp :body (slurp (:body resp) :encoding charset))))
(assoc resp :body (if (:body resp)
(slurp (:body resp) :encoding charset)
""))))
(defn- response-map
[opts http-response]

View file

@ -425,12 +425,19 @@ public class JavaClient {
charset = contentType.getCharset().name();
}
try {
if (body == null){
response = "";
}
else{
response = IOUtils.toString(body, charset);
}
} catch (IOException e) {
throw new HttpClientException("Unable to read body as string", e);
}
try {
if (body != null){
body.close();
}
} catch (IOException e) {
throw new HttpClientException(
"Unable to close response stream", e);

View file

@ -52,3 +52,9 @@
(let [body "foo"]
(is (= (compute-content-type body "text/html")
"text/html; charset=UTF-8")))))))
(deftest null-response-body-coerced-as-text
(testing "a null response body is coerced into a string by JavaClient.coerceBodyType"
(let [body nil]
(is (= "" (JavaClient/coerceBodyType body ResponseBodyType/TEXT nil))))))

View file

@ -29,3 +29,9 @@
(let [body "foo"]
(is (= (compute-content-type body "text/html")
"text/html; charset=UTF-8")))))))
(deftest nil-response-body-coerced-as-text
(testing "a nil response body is coerced into a string by async/coerce-body-type"
(let [resp {:body nil, :opts {:as :text}}]
(is (= {:body "", :opts {:as :text}}
(coerce-body-type resp))))))