25.15.1 HTTPリクエストのエンティティに使用できるJavaの型とMIMEメディアタイプの組み合わせ

HTTPリクエストのエンティティボディに使用できるJava型とMIMEメディアタイプの組み合わせを次の表に示します。なお,これ以外の組み合わせの場合,JAX-RSエンジンの動作は保証されません。

表25-6 エンティティボディに使用できるJavaの型とMIMEメディアタイプの組み合わせ

項番Javaの型charset※1Content-Type HTTPヘッダContent-Type HTTPヘッダ※2
(JAX-RSエンジン)
1byte[]×任意(*/*)application/octet-stream
2java.lang.String任意(*/*)text/plain
3java.io.InputStream×任意(*/*)application/octet-stream
4java.io.Reader任意(*/*)text/plain
5java.io.File×任意(*/*)application/octet-stream
6javax.activation.DataSource×任意(*/*)application/octet-stream
7javax.xml.transform.Source※3×任意(*/*)application/xml
8javax.xml.bind.JAXBElement<String>※4ext/xml,
application/xml,
application/*+xml
application/xml
9XmlRootElementアノテーションでアノテートされたJAXBクラス※4text/xml,
application/xml,
application/*+xml
application/xml
10javax.ws.rs.core.MultivaluedMap<String,String>application/x-www-form-urlencodedapplication/x-www-form-urlencoded
11javax.ws.rs.core.StreamingOutput×任意(*/*)application/octet-stream
12org.w3c.dom.Document×任意(*/*)application/xml
13java.awt.image.RenderedImage×image/jpegapplication/octet-stream
14javax.ws.rs.core.GenericEntity<T>※5Tに指定した型と同じMIMEメディアタイプです。Tに指定した型と同じMIMEメディアタイプです。
15POJO※6×※7application/jsonapplication/octet-stream
(凡例)
任意(*/*):すべてのMIMEメディアタイプをサポートしていることを示します。
注※1
Content-Type HTTPヘッダにcharsetパラメタが含まれる場合,HTTPリクエストに変換するときにその情報が考慮されるかどうかを示します。
○:考慮されます。Content-Type HTTPヘッダにcharsetパラメタが含まれない場合は,UTF-8が仮定されます。
△:Tに指定した型に依存します。
×:考慮されません。
注※2
ClientRequestオブジェクトまたはWebリソースオブジェクトで,Content-Type HTTPヘッダが指定されていない場合,エンティティがnull以外のときは,このカラムで指定したContent-Typeを考慮して,HTTPリクエストのContent-Type HTTPヘッダを設定します。
エンティティがnullのときの動作は,HTTPリクエストをする前に,HttpURLConnectionオブジェクトにContent-Type HTTPヘッダを設定しないときの動作と同じです。
注※3
次に示す実装クラスを使用できます。
・javax.xml.transform.stream.StreamSource
・javax.xml.transform.sax.SAXSource
・javax.xml.transform.dom.DOMSource
注※4
MIMEメディアタイプがapplication/fastinfosetまたはapplication/jsonの場合,エラーにならないで正常終了します。
注※5
Tにはこの表の項番1から項番13,および項番15の型を指定できます。
注※6
JSON POJOマッピングを有効にしてください。JSON POJOマッピングが有効でない場合の動作は,サポートされないJava型がエンティティパラメタに指定された場合の動作と同じです。JSON POJOマッピングを有効にする方法については「18. JSON POJOマッピング」を参照してください。
注※7
Content-Type HTTPヘッダにcharsetパラメタを追加しないでください。

指定したJavaの型がサポートされていない型で,値がnullでない場合,エラーとなり(KDJJ10032-EおよびKDJJ18888-E),ClientHandlerExceptionがスローされます。ただし,指定したJavaの型がjavax.mail.internet.MimeMultipartで,MIMEメディアタイプがmultipart/*のときはエラーにならずに正常終了します。

次に示すJavaの型では,HTTPリクエストのエンティティボディが使用できないMIMEメディアタイプの場合,エラーとなり(KDJJ10032-EおよびKDJJ18888-E),ClientHandlerExceptionがスローされます。

  1. javax.xml.bind.JAXBElement<String>
  2. XmlRootElementアノテーションでアノテートされたJAXBクラス
  3. javax.ws.rs.core.MultivaluedMap<String, String>
  4. java.awt.image.RenderedImage
  5. POJO

ただし,1.または2.でHTTPリクエストのエンティティボディのMIMEメディアタイプがapplication/fastinfosetまたはapplication/jsonのときは,エラーにならないで正常終了します。

HTTPリクエストおよびHTTPレスポンスの処理中に例外が発生した場合,エラーとなり(KDJJ18888-E),その例外をラップしたClientHandlerExceptionがスローされます。

また,HTTPメソッドの種類によっては次の注意事項があります。