akka-httpを使用して内部エンドポイントに対して簡単なPOST要求を行うときに問題が発生します。コードのこの部分を実行した場合:Akka-http POSTの結果は「サーバー側のHTTPバージョンはサポートされていません」
for {
request <- Marshal(merchantTransactionRequest).to[RequestEntity]
response <- Http().singleRequest(
HttpRequest(
method = HttpMethods.POST,
uri = "http://foo/bar:8080",
entity = request.withContentType(ContentTypes.`application/json`)
)
)
...
} yield ...
私は次のエラーで迎えます:
直後に次のログが先行するakka.http.scaladsl.model.IllegalResponseException: The server-side HTTP version is not supported at akka.http.impl.engine.client.OutgoingConnectionBlueprint$PrepareResponse$$anon$1.onPush(OutgoingConnectionBlueprint.scala:191) ...
:私の一環として
[0] </10.0.0.135:42610->foo:8080> pushing request to connection: POST bar Strict(508 bytes)
私は、魔法のように成功した(そしてHTTP/1.1
と応答する)カールを使用して、エンドポイントに同じクエリを実行しました。 HttpRequest(...)
はデフォルトでprotocol = HttpProtocols.`HTTP/1.1`
を使用しているので、どういうわけかakka-httpとこの他のエンドポイントの間で交渉されたHTTPバージョンが間違っているという疑いがあります。
akka-httpがPOSTを実行するときに何とかHTTPバージョンを適用できますか?またはakka-httpはcurlがなぜPOSTに成功するのかについての他の手掛かりはありませんか?問題はGETではなくPOSTを実行しているときにのみ発生することに注意してください。
私は同じ問題を抱えています、あなたは精緻化できますか?あなたの答えでは、両方に「直接接続する」というフレーズを使用します。私は 'localhost'が動作し、TLDを持っていないことを知っています。あなたはどうやってそれを説明しますか? –