Я буду использовать и HTTp-клиент для этого, в fsharp вы можете использовать различные вещи, такие как F # Data: HTTP Utilities или и пакет HTTP-клиента для этой цели. Я рекомендую HTTP.fs :
Просто создайте консольное приложение и добавьте этот пакет nuget
dotnet new console -lang f# -o http-rest-client
cd http-rest-client
dotnet add package Http.fs
dotnet add package Hopac
Затем замените код в Program.fs следующим образом:
// Узнайте больше о F # на http://fsharp.org
open System.IO
open System.Text
open Hopac
open HttpFs.Client
let multipartRequest =
Request.createUrl Post "http://httpbin.org/post"
|> Request.setHeader (Accept "application/json")
|> Request.body (BodyForm [
FormFile ("file", ("testfile.txt",
ContentType.create("text", "plain"),
Binary (File.ReadAllBytes ("./testfile.txt"))
))])
|> Request.responseAsString
|> run
[<EntryPoint>]
let main argv =
printfn "%s" multipartRequest
0
Создайте файл с, в этом случае, чтобы лучше его увидеть .txt файл с читаемым содержимым. и httpbin p для тестирования мошенничества, в моем случае файл содержит:
➜ cat testfile.txt
calimero calimero calimero calimero
Тогда вы можете запустить свой проект:
dotnet run
{
"args": {},
"data": "",
"files": {
"file": "calimero calimero calimero calimero\n"
},
"form": {},
"headers": {
"Accept": "application/json",
"Content-Length": "241",
"Content-Type": "multipart/form-data; boundary=\"BPj'o/kJ+CaKDQUuOnIaoLq/diChFH\"",
"Host": "httpbin.org"
},
"json": null,
"origin": "83.53.248.254, 83.53.248.254",
"url": "https://httpbin.org/post"
}
В пакете Http.fs есть много примеров для отправки формы, и библиотеке удается добавить херадеров, которые вам нужны для multipart-form-data