はじめに
以下のような直接HTTPリクエストのbodyに差し込まれているJSONデータを取り出す方法を考えてみました。
Content-Type: text/plain; charset=utf-8
Connection: close
User-Agent: Jakarta Commons-HttpClient/3.0.1
Host: localhost:21380
Content-Length: 40
{"id":"100","name":"test","value":"abc"}
環境
- OS:Windows 10
- Java:1.8.0.191
- ASTERIA Warp:1806
フロー
HTTPStart
ヘルプをみるとHTTPStartの出力ストリームはParameterListかMIMEが選択できるようですがParameterListは
HTMLフォームのパラメーター(HTMLのformタグ)
とあります。今回はHTMLフォームの形式ではくbodyに直接JSONが差し込まれているのでひとまずMIMEでHTTPのリクエストをそのまま出力します。
MIMEDecode
出力ストリームはtext
で「取得対象とする条件式」にpart[0]
とだけ書いておきます。
これでbodyのJSONデータを取得できます。
MIMEの記述方法はヘルプや参考文献など確認してください。
JSONDecode
JSONデータを取得できたのであとはJSONDecodeでXMLやRecordなどに持ち替えてフローで扱えます。
おわりに
HTTPStartでbodyのデータを直接取得できればよかったのですが、現在はストリームタイプMIMEで一旦リクエストをそのまま出力し、MIMEDecodeで取り出す方法になりそうです。
MIMEDecodeは少し癖があるので使うときにいつも戸惑いますが、ひとまず何も考えずにpart[0]
でHTTPリクエストのbodyがとれるという備忘も込めて。
以上です。