gpt4 book ai didi

c# - 为什么 F# 代码产生的结果与 C# 不同

转载 作者:行者123 更新时间:2023-12-02 16:13:08 24 4
gpt4 key购买 nike

为什么这个 C# 代码可以运行,但等效的 F# 版本(通过 F# 交互式运行)却不行?结果应该是一个只有数字的 HTML 表格。

C# 版本:

    var url = "https://www.investing.com/instruments/HistoricalDataAjax";

var httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.Method = "POST";

httpRequest.Headers["Origin"] = "http://www.investing.com";
httpRequest.Headers["X-Requested-With"] = "XMLHttpRequest";
httpRequest.ContentType = "application/x-www-form-urlencoded";
httpRequest.UserAgent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/51.0.2704.79 Chrome/51.0.2704.79 Safari/537.36";

var data = "curr_id=1073048&smlID=2627117&header=SE0010296574%20Historical%20Data&st_date=04%2F12%2F2020&end_date=05%2F12%2F2021&interval_sec=Daily&sort_col=date&sort_ord=DESC&action=historical_data";

using (var streamWriter = new StreamWriter(httpRequest.GetRequestStream()))
{
streamWriter.Write(data);
}

var httpResponse = (HttpWebResponse)httpRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
Console.WriteLine(result);
}

Console.WriteLine(httpResponse.StatusCode);

F# 版本:

let url = "https://www.investing.com/instruments/HistoricalDataAjax"
let httpRequest = WebRequest.Create(url) :?> HttpWebRequest
httpRequest.Method <- "POST"
httpRequest.Headers.["Origin"] <- "http://www.investing.com"
httpRequest.UserAgent <- "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/51.0.2704.79 Chrome/51.0.2704.79 Safari/537.36"
httpRequest.Headers.["X-Requested-With"] <- "XMLHttpRequest"
httpRequest.ContentType <- "application/x-www-form-urlencoded"
let data = "curr_id=1073048&smlID=2627117&header=SE0010296574%20Historical%20Data&st_date=04%2F12%2F2020&end_date=05%2F12%2F2021&interval_sec=Daily&sort_col=date&sort_ord=DESC&action=historical_data";
let streamWriter = new StreamWriter(httpRequest.GetRequestStream())
streamWriter.Write(data)
let httpResponse = httpRequest.GetResponse() :?> HttpWebResponse
let streamReader = new StreamReader(httpResponse.GetResponseStream())
let html = streamReader.ReadToEnd()
printfn "%A" httpResponse.StatusCode

最佳答案

(已更新)

您会得到不同的结果,因为 POST 是在没有正文的情况下发送的。流编写器需要刷新:

( use streamWriter = new StreamWriter(httpRequest.GetRequestStream())
streamWriter.Write(data) )

关于c# - 为什么 F# 代码产生的结果与 C# 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67512864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com