我正在try 将数据发送到URL,并使用ServiceStack取回字节array.

    byte[] pdf = await "https://some-url.com/that-expects-post/and-returns/pdf-file"
        .PostToUrlAsync(new
        {
            param1 = "aaa",
            param2 = 123
        },
        requestFilter: req =>
            req.Headers.Add("Cookie",
                cookies.Select(x => $"{x.Name}={x.Value}").Join(";")));

请求起作用了,我得到了一个PDF文件,但格式是字符串,而不是字节. 我试着将这个字符串保存到文件中,但没有成功.

我怎么才能解决这个问题?

推荐答案

看看HttpUtils.HttpClient.cs中的HTTP Utils实现,看看不同的扩展方法是如何实现的,它们只是SendStringToUrl/AsyncSendBytesToUrl/Async的方便包装器.

要接收字节,您需要使用像PostBytesToUrlAsync这样的*Bytes个方便方法中的一个,但它们只接受您需要自己构造的字节请求体.

例如,您可以发送与PostToUrl个API发送的表单数据请求相同的表单数据请求:

var formData = QueryStringSerializer.SerializeToString(new {
    param1 = "aaa",
    param2 = 123
}).ToUtf8Bytes();

var pdf = await url.PostBytesToUrlAsync(formData, 
    contentType: MimeTypes.FormUrlEncoded,
    requestFilter: req => req.Headers.Add("Cookie",
        cookies.Select(x => $"{x.Name}={x.Value}").Join(";")));

Csharp相关问答推荐

向类注入一个工厂来创建一些资源是一个好的实践吗?

如何保持主摄像头视角保持一致?

找不到网址:https://localhost:7002/Category/Add?区域= Admin.为什么我的URL是这样生成的?area = Admin而不是/Admin/

如何将Kafka消息时间戳转换为C#中的日期和时间格式?

C#EF Core 8.0表现与预期不符

Quartz调度程序不调用作业(job)类

C#阻塞调用或await calling inside calling方法

集合表达式没有目标类型

使用switch 类型模式时出现奇怪的编译器行为

如何避免在.NET中将日志(log)写入相对路径

在扩展方法中,IEnumerable<;T>;不会转换为IEumerable<;T&>

匿名类型的AbstractValidator

如何从非异步任务中正确返回TypeResult

.NET Google Workspace API获取错误CS0266

RCL在毛伊岛应用程序和Blazor服务器应用程序.Net 8.0中使用页面

C#无法将.csv列转换为用于JSON转换的列表

用MongoDB c#驱动程序删除和返回嵌套数组中的文档

如何对特定异常使用Polly重试机制?

如何从原始图像到新创建的图像获得相同的特定 colored颜色 ,并且具有相同的 colored颜色 量和相同的宽度和高度?

分别切换用于读取和写入的EF核心日志(log)