![](/img/trans.png)
[英]how to change ReadWriteTimeout for powershell Invoke-WebRequest or Invoke-RestMethod?
[英]powershell invoke-webrequest does not work but invoke-restmethod works
我想获取网页的内容以及何时使用
$web = Invoke-RestMethod -Uri "https://inkscape.org/"
我会得到内容但是当我使用
$web = Invoke-WebRequest -Uri "https://inkscape.org/"
我什么也得不到,为什么会这样?? 到底有什么区别?
简单地说,对于纯文本或HTML响应正文,(旧的) Invoke-WebRequest
cmdlet 和Invoke-RestMethod
cmdlet 之间的关系相对于默认GET
方法如下:
# -UseBasicParsing is only needed in *Windows PowerShell*.
(Invoke-WebRequest -UseBasicParsing -Uri "https://inkscape.org/").Content
是相同的:
Invoke-RestMethod -Uri "https://inkscape.org/"
那是:
Invoke-WebRequest
返回一个响应对象,其.Content
属性包含响应的正文,始终为文本(除非您使用-OutFile
将原始正文保存到文件中)。
Invoke-RestMethod
直接返回响应正文(仅)。
此外,如果目标站点指示正在返回 XML 或 JSON 数据,则Invoke-RestMethod
不会将正文返回为text ,而是自动将其解析为[xml]
实例 / [System.Xml.XmlElement]
实例(用于 RSS / Atom 提要)或[pscustomobject]
图( ConvertFrom-Json
是内置的,可以这么说)。
即使没有已知的响应数据格式,PowerShell 也会尝试解析响应主体,首先是 XML,然后是 JSON; 如果所有尝试都失败,则返回纯文本( [string]
实例)。
即使对于text/html
响应,也会尝试将它们解析为 XML 。 也就是说,如果一个页面恰好是有效的 XML(现在很少见),您将获得一个[xml]
实例; 例如, https: //httpbin.org/html 上非常简单的 HTML5 页面恰好是有效的 XML(不包括<!DOCTYPE html>
声明),而 HTML5 页面通常不是. 因此,
(Invoke-RestMethod https://httpbin.org/html).GetType().FullName
返回System.Xml.XmlDocument
,即一个[xml]
实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.