gpt4 book ai didi

httpwebrequest - 如何在 PCL 中指定 HttpWebRequest.Headers ["Range"]?

转载 作者:行者123 更新时间:2023-12-04 06:43:17 26 4
gpt4 key购买 nike

我正在编写一个渐进式下载器作为可移植类库 (Profile=24)。它将支持以字节 block 的形式部分下载目标文件。 HttpClient 不可用,我将使用 HttpWebRequest,它具有用于部分下载的 AddRange 方法。但该方法似乎无法从 PCL 内部获得。所以我设置了 HttpWebRequest.Headers["Range"],但这样做会抛出以下 ArgumentException:

“必须使用适当的属性或方法修改‘范围’ header 。\r\n参数名称:名称”

“适当的属性”似乎是 HttpWebRequest.AddRange,但正如我所说,它似乎并未从 PCL 内部公开。所以我很困惑:在 PCL 中指定 HttpWebRequest.Headers["Range"] 的正确方法是什么?

谢谢,西蒙

最佳答案

我没有找到答案,但以下界面解决方法对我有用:

我没有在可移植代码中创建 HttpWebRequest,而是定义了以下自定义接口(interface):

public interface IMyRequest {
[...]
void AddRange(long from, long to);
}

public interface IMyRequestFactory {
IMyRequest Create(string url);
}

然后,在我的不可移植代码中,我创建了实现这些接口(interface)的类:

public class MyRequestImp : IMyRequest {
private readonly HttpWebRequest request;

public MyRequestImp (string url) {
request = (HttpWebRequest)WebRequest.Create(url);
}

[...]

public void AddRange(long from, long to) {
request.AddRange(from, to);
}
}

public class MyRequestFactoryImp: IMyRequestFactory {
public IMyRequest Create(string url) {
return new MyRequestImp(url);
}
}

在初始化时的某个时刻,我的不可移植代码通过 IMyRequestFactory 接口(interface)将一个 MyRequestFactoryImp 对象传递到我的可移植库。由于 HttpWebRequest 是在 PCL 之外创建的,因此您可以访问该类的全部功能。

关于httpwebrequest - 如何在 PCL 中指定 HttpWebRequest.Headers ["Range"]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28618295/

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