Springboot - 要求のHTTPリクエストを送信するために、よりエレガントな方法

参考: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。
}

おすすめ

転載: www.cnblogs.com/baizhuang/p/11870982.html