F#HTTP发布,读取状态码响应

时间:2018-10-07 13:23:42

标签: http post f#

我使用Fsharp.DATA发送HTTP POST请求并读取响应状态码。在这种情况下,我期望成功时为302(重定向),失败时为200(确定)。我可以在小提琴手上看到我得到的是302,而该302又正在重新定向,因此生成了“ GET”请求。在我的代码中,我想阅读状态码“ 302”,以向我表明它已经起作用。但是,我的代码响应给了我后续的“ GET”请求(200)的状态代码,而不是我最初发出的请求(302)的状态代码。至少...我认为这就是为什么尽管我最初的POST请求具有302状态代码(在小提琴手中显示),但它仍读取200而不是302的原因

The first POST I send returns a 302 which generates the second 200

let postTEST cap:string =
if Http.Request("https://foo.com/m=account-creation/create_account",
     body = FormValues [
    "foo", "foo";
    "foo", "foo";
    "email1", email;
    "onlyOneEmail", "1";
    "password1", foo;
    "onlyOnePassword", "1";
    "foo", "foo";
    "foo", "12";
    "month", "10";
    "year", "foo";
    "foo", cap;
    "foo", "foo";]).StatusCode = 320 then "worked"
    else "Not worked"

1 个答案:

答案 0 :(得分:1)

您可以通过自定义HTTP请求来禁用以下重定向:

Http.Request(
    "https://example.url",
    body = FormValues [],
    customizeHttpRequest = fun r -> r.AllowAutoRedirect <- false; r)

有关更多信息,请参见the FSharp.Data section "Customizing the HTTP request"the HttpWebRequest docs