我该如何在F#中发出HTTP POST请求?

5
以下代码发送了一个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请求。有人看到相关文档吗?

2个回答

2

对我来说似乎工作得很好。例如(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.
"

也许你正在以不同的方式使用它?

嗯,我并不是有意出难题。我不确定出了什么问题,但我通过改变调用方式使事情正常运行了...谢谢! - Kevin Cantu
在上面的例子中,你如何设置Accept头? - App2015

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接