2017-12-03 5 views
0

jsonを扱うだけでなく、非常に汎用的なapiにGroovy HTTPBuilderを使用しています。そのため、私は自分自身でレスポンスをどのように逆シリアル化するかを制御したいと思っています。しかし、レスポンスハンドラはコンテンツタイプapplication/jsonを常にマップに解析しているようです。どのようにプレーンテキスト(またはバイト[])を得ることができますか?HTTPBuilderがapplication/jsonのような特定のコンテンツタイプを解析するのを止める方法

 def lambda = new HTTPBuilder(lambdaUrl) 
     lambda.request(method) { 
      send contentType, payload 

      response.success = { resp, reader -> 
       if (log.isDebugEnabled())log.debug("response: $resp") 
       lambdaResponseStatus = resp.statusLine.statusCode 
       lambdaResponse = Reader.isAssignableFrom(reader.getClass()) ? reader.text : reader.toString() 
      } 
     } 

reader.toString()は基本的にのLinkedHashMapのtoStringを呼び出しであることに留意されたいです。しかし、私が実際に望んでいるのは、レスポンスにどのようなコンテンツタイプが入っても、単純な読者だけです。

答えて

0

これにいくつかの望ましくない副作用があるのか​​どうかはわかりませんが、最終的に解決策は要求の一部として必要なコンテンツタイプを渡すのと同じくらい簡単でした。

lambda.request(method, ContentType.BINARY) 
... 
response.success = { resp, reader -> reader.bytes } 
関連する問題