繁体   English   中英

如何使用反射更改Powershell中的HttpWebRequest标头?

[英]How to use reflection to change HttpWebRequest headers in Powershell?

我需要使用受.NET限制的Powershell(v2)创建带有特定标头的HttpWebRequest。 我读了另一篇文章文章是用C#完成的,但是我在Powershell中实现相同目标遇到困难

到目前为止,这是基于以上链接的内容:

$httpWebRequest = [System.Net.HttpWebRequest][System.Net.WebRequest]::Create($url)
[System.Reflection.BindingFlags]$bflags = [Reflection.BindingFlags]"NonPublic" -bor [Reflection.BindingFlags]"Instance" -bor [Reflection.BindingFlags]"InvokeMethod"
$httpWebRequest.Headers.GetType().InvokeMember("ChangeInternal", $bflags, $null, $httpWebRequest.Headers, @{"Host" = "www.example.com"})

不幸的是,Powershell的错误响应如下:

“使用” 5“参数调用” InvokeMember“的异常:”找不到方法'System.Net.WebHeaderCollection.ChangeInternal'。“

我应该如何调用“ ChangeInternal”? 我遇到的错误与错误的程序集版本有关吗?

InvokeMember的最后一个参数是一个参数数组,而ChangeInternal采用两个参数,即名称和值。 发生错误是因为反射无法找到一个接受单个参数的名为ChangedMember的方法。 用这个:

$httpWebRequest.Headers.GetType().InvokeMember("ChangeInternal", $bflags, $null, $httpWebRequest.Headers, @("Host", "www.example.com"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM