我感兴趣的是将HTTP请求编写到我编写的侦听Web服务(用于测试目的)。我想在Powershell中这样做。通过telnet发起HTTP请求很容易。
telnet google.com 80
然后,在建立套接字后,我可以输入以下HTTP谓词和文件:
GET /search?q=test
这相当于执行Google搜索单词" test"。大!但是,如果我想做一些更有趣的事情,我需要提供更详细的HTTP请求标头。我尝试做的事情非常类似于此处的示例:http://blog.tonycode.com/tech-stuff/http-notes/making-http-requests-via-telnet
按照上一个网站上作者的例子,我创建了一个包含以下内容的本地文件:
echo "open $1 $2"
sleep 2
echo "GET $4 HTTP/1.0"
echo "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4"
echo "Host: $3"
echo
echo
sleep 2
(这类似于我想用来测试我自己的网络服务的自定义HTTP请求标头)
然后我将此文件保存为" getpage" (我也尝试将其保存为" getpage.sh")。我继续关注作者的示例,并尝试将以前的文件从Powershell传输到telnet:
./getpage tonycode.com 80 tonycode.com /| telnet
然而,Powershell正在返回以下错误:
Cannot run a document in the middle of a pipeline: ~\Desktop\getpage.
At line:1 char:1
+ ./getpage tonycode.com 80 tonycode.com /| telnet
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (~....Desktop\getpage:String) [], RuntimeException
+ FullyQualifiedErrorId : CantActivateDocumentInPipeline
我在Powershell中键入了$ PSVersionTable,并使用Powershell 4.0版验证了我的身份。我开始没有想法了。我通过telnet查看了关于http请求的StackOverflow论坛,但是我还没有找到一种通过telnet发送自定义HTTP请求头的好方法,方法是通过shell管道传入预先格式化的http头。我无法在telnet中真正键入整个Http请求,因为1)违背了编写这些类型的脚本的目的,2)从telnet按Enter键提交当前请求,然后才能完成键入完整的Http Header。有没有人有任何建议如何在PowerShell中实现这一目标?我已经可以在Firefox中编写和发送自定义Http Headers,它可以让生活更轻松。如果可能的话,我想在Powershell中编写脚本。提前谢谢。
答案 0 :(得分:2)
使用telnet
与HTTP
进行对话可能已经很酷了#34;在过去。但是现在没有人应该这样做。特别是当需要的不仅仅是一个微不足道的GET
时。
您应该使用真实的库,例如libcurl
或开发环境中可用的任何库。
注意:
telnet
或其他"文字"您可能已阅读过的方法无法使用此协议。答案 1 :(得分:2)
我感兴趣的是将HTTP请求编写到我编写的侦听Web服务(用于测试目的)。我想在Powershell中做到这一点。
然后单独留下telnet:)
PowerShell(v3 +)具有内置cmdlet:
或者您可以使用 System.Net.Sockets.TcpClient
或 System.Net.WebClient
PS: