connectionFactory 属性
设置用于创建套接字连接的函数。
请求的 URL(例如通过 getUrl)和代理配置(代码中的 f.proxyHost
和 f.proxyPort
)作为参数传递。如果连接不是通过代理进行,则 f.proxyHost
和 f.proxyPort
将是 null
。
由于连接可能会根据主机和端口进行重用,因此当 f.proxyHost
和 f.proxyPort
不是 null
时,该函数不应忽略它们。如果返回的 Socket 对于代理没有意义,可以设置 findProxy 以使用直接连接。
例如
import "dart:io";
void main() async {
HttpClient client = HttpClient()
..connectionFactory = (Uri uri, String? proxyHost, int? proxyPort) {
assert(proxyHost == null);
assert(proxyPort == null);
var address = InternetAddress("/var/run/docker.sock",
type: InternetAddressType.unix);
return Socket.startConnect(address, 0);
}
..findProxy = (Uri uri) => 'DIRECT';
final request = await client.getUrl(Uri.parse("http://ignored/v1.41/info"));
final response = await request.close();
print(response.statusCode);
await response.drain();
client.close();
}
实现
void set connectionFactory(
Future<ConnectionTask<Socket>> Function(
Uri url, String? proxyHost, int? proxyPort)?
f);