Powershell Send-XmlRcpRequest 的 Hello World?
Hello World for Powershell Send-XmlRcpRequest?
想要output类似的东西:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
如何使用 xml-rpc
powershell 查看响应?
也许可以将 result 从 baidu
“猫”或以某种方式通过管道传输到将打印它的东西?或者,把它放到一个对象中?
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon')
xml methodResponse
--- --------------
version="1.0" encoding="UTF-8" methodResponse
PS /home/nicholas/powershell>
或更完整的请求:
Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
生成类似的结果。东西 like:
$http = New-Object Chilkat.Http
$xmlReq = "<?xml version=`"1.0`"?><methodCall><methodName>demo.sayHello</methodName><params /></methodCall>"
$xmlResponse = $http.XmlRpc("http://www.cknotes.com/xmlrpc.php",$xmlReq)
if ($http.LastMethodSuccess -ne $true) {
$($http.LastErrorText)
exit
}
$($xmlResponse)
除了 this 模块,响应在哪里?
所以您的问题实际上是 “如何将 xml 文档转换为格式良好且可读的字符串” - 答案可能类似于这个:
function Convert-XmlToString
{
param(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[xml]$Xml
)
begin {
# Create formatting settings
$writerSettings = [System.Xml.XmlWriterSettings]@{Indent = $true; OmitXmlDeclaration = $true}
# Create StringBuilder
$stringBuilder = [System.Text.StringBuilder]::new()
}
process {
try {
# Create XmlWriter
$xmlWriter = [System.Xml.XmlTextWriter]::Create($stringBuilder, $writerSettings)
# Write xml document to XmlWriter
$xml.WriteContentTo($xmlWriter)
# Flush XmlWriter to output target (ie. the stringbuilder)
$xmlWriter.Flush()
# Output resulting string
$stringBuilder.ToString()
}
finally{
# Clean up
$xmlWriter.Dispose()
$stringBuilder = $stringBuilder.Clear()
}
}
}
您应该可以使用它来执行以下操作:
PS C:\> $xmlRPCResponse = Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
PS C:\> $xmlRPCResponse |Convert-XmlToString
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
这很接近:
PS /home/nicholas>
PS /home/nicholas> $xmlRPCResponse = Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
PS /home/nicholas>
PS /home/nicholas> $xmlRPCResponse | ConvertTo-Xml -As String <?xml version="1.0" encoding="utf-8"?>
<Objects>
<Object Type="System.Xml.XmlDocument">System.Xml.XmlDocument</Object>
</Objects>
PS /home/nicholas>
虽然不是很理想的输出。
感谢 Mathias,请参阅:
Powershell: Convert XML to String
更好的结果:
PS /home/nicholas>
PS /home/nicholas> $xmlRPCResponse.OuterXml
<?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><int>0</int></value></param></params></methodResponse>
PS /home/nicholas>
虽然是个无用的例子。似乎有效。
想要output类似的东西:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
如何使用 xml-rpc
powershell
也许可以将 result 从 baidu
“猫”或以某种方式通过管道传输到将打印它的东西?或者,把它放到一个对象中?
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon')
xml methodResponse
--- --------------
version="1.0" encoding="UTF-8" methodResponse
PS /home/nicholas/powershell>
或更完整的请求:
Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
生成类似的结果。东西 like:
$http = New-Object Chilkat.Http
$xmlReq = "<?xml version=`"1.0`"?><methodCall><methodName>demo.sayHello</methodName><params /></methodCall>"
$xmlResponse = $http.XmlRpc("http://www.cknotes.com/xmlrpc.php",$xmlReq)
if ($http.LastMethodSuccess -ne $true) {
$($http.LastErrorText)
exit
}
$($xmlResponse)
除了 this 模块,响应在哪里?
所以您的问题实际上是 “如何将 xml 文档转换为格式良好且可读的字符串” - 答案可能类似于这个:
function Convert-XmlToString
{
param(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[xml]$Xml
)
begin {
# Create formatting settings
$writerSettings = [System.Xml.XmlWriterSettings]@{Indent = $true; OmitXmlDeclaration = $true}
# Create StringBuilder
$stringBuilder = [System.Text.StringBuilder]::new()
}
process {
try {
# Create XmlWriter
$xmlWriter = [System.Xml.XmlTextWriter]::Create($stringBuilder, $writerSettings)
# Write xml document to XmlWriter
$xml.WriteContentTo($xmlWriter)
# Flush XmlWriter to output target (ie. the stringbuilder)
$xmlWriter.Flush()
# Output resulting string
$stringBuilder.ToString()
}
finally{
# Clean up
$xmlWriter.Dispose()
$stringBuilder = $stringBuilder.Clear()
}
}
}
您应该可以使用它来执行以下操作:
PS C:\> $xmlRPCResponse = Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
PS C:\> $xmlRPCResponse |Convert-XmlToString
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
这很接近:
PS /home/nicholas>
PS /home/nicholas> $xmlRPCResponse = Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
PS /home/nicholas>
PS /home/nicholas> $xmlRPCResponse | ConvertTo-Xml -As String <?xml version="1.0" encoding="utf-8"?>
<Objects>
<Object Type="System.Xml.XmlDocument">System.Xml.XmlDocument</Object>
</Objects>
PS /home/nicholas>
虽然不是很理想的输出。
感谢 Mathias,请参阅:
Powershell: Convert XML to String
更好的结果:
PS /home/nicholas>
PS /home/nicholas> $xmlRPCResponse.OuterXml
<?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><int>0</int></value></param></params></methodResponse>
PS /home/nicholas>
虽然是个无用的例子。似乎有效。