如何从命令行发送HTTP请求

10

嗨,我需要在命令行中向aspx页面发布请求。我该如何做?


当你说发送一个HTTP请求时,你是指HTTP POST,还是只是像任何浏览器一样请求一个网页(HTTP GET)? - Adam Plocher
8个回答

20

在80端口上使用telnet

例如:

telnet www.your-server.com/pageToTest.aspx 80

然后输入 GET


我得到了 C:\Windows\system32>telnet 'telnet' 不是内部或外部命令,也不是可运行的程序或批处理文件。 - CodyBugstein
1
您可以通过输入以下两个命令来激活Telnet包,然后重新启动计算机,一切都将正常!<br/>pkgmgr /iu:TelnetClient <br/>pkgmgr /iu:TelnetServer - N'Kauh Nathan-Régis Bodje
更多信息:http://www.esqsoft.com/examples/troubleshooting-http-using-telnet.htm - Ring
使用telnet命令不需要Telnet服务器(而且几乎从不建议使用)。 - Adam Plocher

13
所有这些答案都需要安装 Windows 功能或其他程序。PowerShell 默认已安装,并且可以从命令行运行。
powershell -command "Invoke-WebRequest -Uri %url% -Method POST"

1
在Windows 7上使用PowerShell无法工作。 - e-info128
适用于 Windows 10。 - G M
从PowerShell 5开始,Invoke-WebRequest已成为标准功能。 - undefined

7
创建一个.vbs文件包含以下内容:
' Set your settings
    strFileURL = "http://localhost/index.aspx"
    strHDLocation = "stream.temp"

' Fetch the file
    Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    objXMLHTTP.open "GET", strFileURL, false
    objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0    'Set the stream position to the start

Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation

objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

' Delete the temp file
objFSO.DeleteFile strHDLocation

Set objFSO = Nothing

然后使用以下命令执行:

cscript.exe scriptname.vbs

4
这可以使用wget完成。

5
你能举个例子详细说明一下吗? - Adam Plocher

3

我曾经使用cURL http://curl.haxx.se/ 成功模拟发送JSON到Web服务。也许这对你有所帮助。


2

1

Telnet主要用于连接远程Telnet服务器。实际上,它(Telnet服务器)在Windows 10中并不存在,只有客户端。

你最好使用PowerShell。以下是一个访问ODATA服务的示例: http://hodentekhelp.blogspot.com/2014/11/can-you-access-odata-with-powershell.html 此外,请查看这个帖子: https://social.technet.microsoft.com/Forums/en-US/035062dd-5052-4abe-bd9a-8714f4184806/there-is-no-telnet-server-in-windows-10-what-is-the-purpose-of-telnet-client?forum=win10itprogeneral


0

另一种方法是使用wget,这是一个常见的命令行工具(非常适用于下载)。在Windows上,您可以从此处获取http://gnuwin32.sourceforge.net/packages/wget.htm,而它已经是大多数Linux发行版的一部分。要使用它,只需执行以下操作:-

wget google.com

这将返回以下内容

--2018-03-20 16:31:39--  http://google.com/
Resolving google.com... 216.58.204.14
Connecting to google.com|216.58.204.14|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://www.google.co.uk/?gfe_rd=cr&dcr=0&ei=dzexWqybGof38Afo3ZmACg [following]
--2018-03-20 16:31:39--  http://www.google.co.uk/?gfe_rd=cr&dcr=0&ei=dzexWqybGof38Afo3ZmACg
Resolving www.google.co.uk... 216.58.201.3
Connecting to www.google.co.uk|216.58.201.3|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `index.html@gfe_rd=cr&dcr=0&ei=dzexWqybGof38Afo3ZmACg'

    [ <=>                                                                                                                                                                                                 ] 12,441      --.-K/s   in 0s

2018-03-20 16:31:40 (88.3 MB/s) - `index.html@gfe_rd=cr&dcr=0&ei=dzexWqybGof38Afo3ZmACg' saved [12441]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接