25.15.1 HTTPリクエストのエンティティに使用できるJavaの型とMIMEメディアタイプの組み合わせ
HTTPリクエストのエンティティボディに使用できるJava型とMIMEメディアタイプの組み合わせを次の表に示します。なお,これ以外の組み合わせの場合,JAX-RSエンジンの動作は保証されません。
項番 |
Javaの型 |
charset※1 |
Content-Type HTTPヘッダ |
Content-Type HTTPヘッダ※2 (JAX-RSエンジン) |
---|---|---|---|---|
1 |
byte[] |
× |
任意(*/*) |
application/octet-stream |
2 |
java.lang.String |
○ |
任意(*/*) |
text/plain |
3 |
java.io.InputStream |
× |
任意(*/*) |
application/octet-stream |
4 |
java.io.Reader |
○ |
任意(*/*) |
text/plain |
5 |
java.io.File |
× |
任意(*/*) |
application/octet-stream |
6 |
javax.activation.DataSource |
× |
任意(*/*) |
application/octet-stream |
7 |
javax.xml.transform.Source※3 |
× |
任意(*/*) |
application/xml |
8 |
javax.xml.bind.JAXBElement<String>※4 |
○ |
ext/xml, application/xml, application/*+xml |
application/xml |
9 |
XmlRootElementアノテーションでアノテートされたJAXBクラス※4 |
○ |
text/xml, application/xml, application/*+xml |
application/xml |
10 |
javax.ws.rs.core.MultivaluedMap<String,String> |
○ |
application/x-www-form-urlencoded |
application/x-www-form-urlencoded |
11 |
javax.ws.rs.core.StreamingOutput |
× |
任意(*/*) |
application/octet-stream |
12 |
org.w3c.dom.Document |
× |
任意(*/*) |
application/xml |
13 |
java.awt.image.RenderedImage |
× |
image/jpeg |
application/octet-stream |
14 |
javax.ws.rs.core.GenericEntity<T>※5 |
△ |
Tに指定した型と同じMIMEメディアタイプです。 |
Tに指定した型と同じMIMEメディアタイプです。 |
15 |
POJO※6 |
×※7 |
application/json |
application/octet-stream |
指定したJavaの型がサポートされていない型で,値がnullでない場合,エラーとなり(KDJJ10032-EおよびKDJJ18888-E),ClientHandlerExceptionがスローされます。ただし,指定したJavaの型がjavax.mail.internet.MimeMultipartで,MIMEメディアタイプがmultipart/*のときはエラーにならずに正常終了します。
次に示すJavaの型では,HTTPリクエストのエンティティボディが使用できないMIMEメディアタイプの場合,エラーとなり(KDJJ10032-EおよびKDJJ18888-E),ClientHandlerExceptionがスローされます。
-
javax.xml.bind.JAXBElement<String>
-
XmlRootElementアノテーションでアノテートされたJAXBクラス
-
javax.ws.rs.core.MultivaluedMap<String, String>
-
java.awt.image.RenderedImage
-
POJO
ただし,1.または2.でHTTPリクエストのエンティティボディのMIMEメディアタイプがapplication/fastinfosetまたはapplication/jsonのときは,エラーにならないで正常終了します。
HTTPリクエストおよびHTTPレスポンスの処理中に例外が発生した場合,エラーとなり(KDJJ18888-E),その例外をラップしたClientHandlerExceptionがスローされます。
また,HTTPメソッドの種類によっては次の注意事項があります。
-
HTTPメソッドがDELETE,HEAD,またはOPTIONSのどれかの場合,HTTPリクエストのエンティティボディにはnullでない値を指定しないでください。nullでない値が指定されたときはエラーとなり(KDJJ18888-E),ClientHandlerExceptionがスローされます。
-
HTTPメソッドがGETの場合,HTTPリクエストのエンティティボディにはnullでない値を指定しないでください。nullでない値が指定されたときは無視されます。
-
HTTPメソッドがPOSTまたはPUTでHTTPリクエストのエンティティボディにnullが指定された場合,送信されるHTTPリクエストにエンティティボディは含まれません。