F#catch System.Web.Exception

时间:2015-03-02 10:39:39

标签: f# f#-data

我已经使用TickSpec(C#Specflow的F#版本)编写测试来测试Web服务。当我运行测试时,我希望响应带来200 OK,一切都很好。当我故意发送不正确的请求时,我收到400 Bad Request,但是测试失败了,尽管400是我想要的。所以问题是 - 如何捕获异常并继续使用F#?

这是我的代码片段:

let sendRequest(requestBody : HttpRequestBody) = 
    let response = Http.Request(url, headers = requestHeaders, body = requestBody)
    let responseStatusCode = response.StatusCode
    let extractedResponseData = 
    // code here to extract data from response
(responseStatusCode, extractedResponseData)

我得到的错误是

System.Net.WebException : The remote server returned an error: (400) Bad Request.

我希望在

周围尝试捕获(在F#中尝试?)
 let response = Http.Request(url, headers = requestHeaders, body = requestBody)

可以解决问题。

我可以这样做吗?我该怎么做?

1 个答案:

答案 0 :(得分:2)

添加:

   silentHttpErrors = true

为:

   let response

如:

 let response = Http.Request(url, headers = requestHeaders, body = requestBody, silentHttpErrors = true)

排序问题。现在测试忽略了System.Net.WebException,我可以测试应用程序与400错误请求相关的行为。

更多信息:http://fsharp.github.io/FSharp.Data/library/Http.html