参考:https://www.cnblogs.com/javazhiyin/p/9851775.html
残りのテンプレート
春はRestTemplateがサービスにアクセスするために使用するクライアントは、メソッドのHTTPのさまざまなサービスへの容易なアクセスを休ま提供することであり、効率が大幅に書き込み、クライアントに促すことができます
我々は、Apache HttpClientを開発、コードの複雑さである前のHttp開発。以下は、パッケージget要求であります
パブリック 静的JSONObjectのdoGet(文字列のURL){ JSONObject化するJsonResult = NULL ; してみてください(CloseableHttpClientクライアント= HttpClients.createDefault();){ HTTPGET要求 = 新しいHTTPGET(URL); request.setConfig(requestConfig)。 試みる(CloseableHttpResponse応答= client.execute(リクエスト)){ int型からstatusCode = response.getStatusLine()getStatusCode()。 もし(からstatusCode == HttpStatus.SC_OK){ HttpEntityエンティティ = response.getEntity()。 ResponseContent文字列 = EntityUtils.toString(エンティティ); するJsonResult = JSONObject.parseObject(responseContent); } 他{ log.error( "Getリクエストが失敗しました:{}、ステータスコード:{}" 、URL、からstatusCode); } } } キャッチ(IOExceptionをE){ log.error( "例外Getリクエスト:{}、{}" 、URL、e.getMessage()); e.printStackTrace(); } 戻り化するJsonResultを; }
このチュートリアルでは、春生態GETとPOSTリクエストでRestTemplateを達成し、要求と交換RestTemplateコアのソースコードの種類を指定する要求を分析します。
まず、ジェーン・ブックRestTemplate
ばねは、クライアント側の同期コアクラスである単純化通信およびHTTPサービスとRESTful原理を満たすために、プログラムコードは、それへのURL、及び抽出結果を提供することができます。デフォルトでは、RestTemplate JDKに依存するデフォルトのHTTP接続ツール。
もちろん、あなたはまた、そのようなApacheのHttpComponents、ネッティーとOkHttpなどsetRequestFactory HTTPソースによって異なるプロパティに切り替えることができます。
RestTemplate大幅フォームデータを送信することの難しさを簡素化し、機能を自動的にJSONデータを変換し、だけ(ヘッダ、本体)の構造の組成HttpEntityを理解し、その使用上の正規制御するために、URLVariablesオブジェクトの違いを理解することができます。
クラスのメインエントランスは、HTTPの6つのメソッドに従って開発することです
また、交換及び一般的な方法は、上述excuteができます。
使用例HttpMessageConverterはHTTP RestTemplateデフォルト内のメッセージに又はからHTTPメッセージPOJO POJOに変換されます。デフォルトでは、コンバータのMIMEタイプに登録されただけでなく、他のコンバータがsetMessageConvertersにより登録することができます。
実際には、この時点では感知できない使用して、多くの方法がresponseTypeパラメータがあり、それはあなたには、レスポンス・ボディにマッピングされ、その後、マッピングを行うためにHttpMessageConverterでボトムされ、着信対象にできます
HttpMessageConverterExtractor <T> responseExtractor =
新しい HttpMessageConverterExtractor <>(responseType、getMessageConverters()、ロガー)。
HttpMessageConverter.java
パブリック インターフェース HttpMessageConverterタイプ<T> { // この変換器は、与えられたクラスを読み込むことができるかどうかを示します。 ブール canRead(クラス<?> clazz、@NullableのMediaType MEDIATYPE); //は、このコンバータは、クラス与え対処できるかどうかを示します。 ブール canWrite(クラス<?> clazz、@NullableのMediaType MEDIATYPE); // 戻りリスト<のMediaType> 一覧<のMediaType> getSupportedMediaTypes(); // inputMessage読ん T読むを(<?クラスは、拡張 T> clazz、HttpInputMessage inputMessage) スローにIOException、HttpMessageNotReadableExceptionは; // 出力メッセージオブジェクトの書き込みを 無効にライト(T T、@NullableのMediaTypeのcontentType、HttpOutputMessage outputMessage)は スローにIOException、HttpMessageNotWritableExceptionと、 }
インテリアでは、RestTemplateデフォルトSimpleClientHttpRequestFactoryとDefaultResponseErrorHeaderは、作成およびHTTPのエラーを処理するために、だけでなく、setRequestFactoryとsetErrorHanderでカバーすることができます
二つは、練習の要求を取得します
公共 <T> T getForObject(文字列のURL、クラス<T> responseType、オブジェクト... uriVariables){} 公共 <T> T getForObject(文字列のURL、クラス<T> responseType、地図<文字列、?> uriVariables) 公共 < T> T getForObject(URIのURL、クラス<T> responseType)
getForObjectは()実際にはよりgetFacEntityよりも()、それはアドレス応答機能をPOJO機能に変わりますより多くのHTTP以外含まれていますが、ないです。それはPOJOであるに近いを取得する必要があります
POJO
パブリック クラスのお知らせ{ プライベート int型のステータス。 プライベートオブジェクトのMSG。 プライベートリスト<databeanは> データ; } パブリック クラスdatabeanは{ プライベート int型noticeId。 プライベート文字列noticeTitle。 プライベートオブジェクトnoticeImg。 プライベート 長いnoticeCreateTime。 プライベート 長いnoticeUpdateTime。 プライベート文字列noticeContent。 }