【问题标题】:How can I make an HTTP POST request in F#?如何在 F# 中发出 HTTP POST 请求?
【发布时间】:2011-03-28 11:10:09
【问题描述】:

以下代码发送一个 GET 请求。这让我发疯了。

let postDocRaw (url:string) (data: string) : string =
      let data' : byte[] = System.Text.Encoding.ASCII.GetBytes(data);

      let request = WebRequest.Create(url)
      request.Method        <- "POST"
      request.ContentType   <- "application/x-www-form-urlencoded"
      request.ContentLength <- (int64) data'.Length

      use wstream = request.GetRequestStream() 
      wstream.Write(data',0, (data'.Length))
      wstream.Flush()
      wstream.Close()
(*
      use writer = new StreamWriter (wstream) 
      writer.Write(data')
      writer.Flush()
      writer.Close()
*)

      let response  = request.GetResponse()
      use reader     = new StreamReader(response.GetResponseStream())
      let output = reader.ReadToEnd()

      reader.Close()
      response.Close()
      request.Abort()

      output

目前我不确定是否有人使用过 F# 发送 HTTP POST。有人看过这方面的文档吗?

【问题讨论】:

    标签: http f# http-post


    【解决方案1】:

    对我来说似乎工作得很好。例如(posttestserver.com 确实存在):

    printfn "response: %A" (postDocRaw "http://posttestserver.com/post.php" "hello=data")
    Console.ReadLine() |> ignore
    

    结果:

    response: "
    Successfully dumped 1 post variables.Post body was 0 chars long.
    "
    

    也许您以不同的方式使用它?

    【讨论】:

    • 嗯,我并不是说这是一个技巧问题。我不确定我是否理解出了什么问题,但我已经通过改变我的称呼方式让事情变得正常......谢谢!
    • 上例中如何设置Accept标头?
    【解决方案2】:

    我发现一篇关于 Request-Response Testing With F# 的 MSDN 文章

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      相关资源
      最近更新 更多