2017-01-26 16 views
1

を印刷し、私は今、コードが400不正な要求エラーを取得し、I REST WebサービスへのPOSTコールはScalaのHTTP4s全体HTTPエラー応答

val client = SimpleHttp1Client() 
val form = UrlForm("username" -> userName, "password" -> password) 
val uri = Uri.fromString(url).valueOr(throw _) 
val list = List(`Content-Type`(MediaType.`application/json`), Accept(MediaType.`application/json`)) 
val req = POST(uri, form).map(_.putHeaders(list :_*)) 
try { 
    val result = client.expect[String](req).unsafePerformSync 
    Some(result) 
} catch { 
    case e : Throwable => println(e.getMessage); None 
} 

を作るためにhttp4sクライアントライブラリを使用するには、このコードを書きましたなぜか分からない。私は上記のコードでエラーの本文全体を印刷することができません。

私はPOSTMANを通して同じREST呼び出しを行うとき、私が見ることができる400不正な要求エラーボディ、私は自分のコードでエラー全体の体を印刷することができますどのように

{ 
    "errors": [ 
    "password: field is required", 
    "username: field is required" 
    ] 
} 

また、私はContent-TypeとAcceptヘッダーを設定すると、ポストコールが成功します。上記のコードでは、同じ2つのヘッダーと同じjsonボディを設定していますが、このコードでも400エラーが発生します。

val list = List[Header](Header("Accept", "application/json"), Header("Content-Type", "application/json")) 
val req = POST(uri, form).map(_.replaceAllHeaders(list :_*)) 
+1

これはレスポンスです。これはエラーです。同じではありません :) –

答えて

2

http4sチームと会話していましたが、答えが見つかりました。その会話はGoogleによって索引付けされていないので、私はここに答えを書いています。

val output : Either[String, Foo] = client.fetch(request) { 
    case Successful(resp) => resp.as[Foo].map(Right(_)) 
    case resp => resp.as[String].map(Left(_)) 
} 

これはエラーがある場合に表示されます。私たちはこれでエラーの全体を取得します。

関連する問題