powerShell - HttpReqest

Vystavil Likandro

01.01.2012

1
NAPSAL Tito 100. Cez powerShell sa dá aj mimo iného aj pristupovat k dátam z internetu pomocou HttpRequest-u .


NAPSAL Tito 100
Vytvorím si testovací script na serveri www.test.sk/request.php a do neho vložím kód

echo "GET:".$_GET["testget"]."`n".
"GET:".$_POST["testpost"];
?>

v powershell-e je to celkom jednoduché,
Stahovanie dát :

$wc = new-object net.WebClient
$url="http://kreveta.net/rss.xml"
$probe = $wc.downloadData($url)
$s = [text.encoding]::utf8.getString($probe)
$s

metóda GET:

$request = [Net.WebRequest]::Create("www.test.sk/request.php?testget=testujeme")
$response = $request.GetResponse()
$dataStream = $response.GetResponseStream()
$reader =new-object System.IO.StreamReader($dataStream)
$responseFromServer = $reader.ReadToEnd()
$response.close()
$dataStream.close()
$responseFromServer

Metóda POST:

$request = [Net.WebRequest]::Create("www.test.sk/request.php")
$request.Method="POST"
$request.ContentType="application/x-www-form-urlencoded"
$PostData="testpost=testujemeget"
$PostDataByte = [System.text.encoding]::utf8.GetBytes($PostData)
$request.ContentLength = $PostDataByte.Length
$streamPostData = $request.GetRequestStream()
$streamPostData.Write($PostDataByte,0,$PostDataByte.Length)
$streamPostData.close()
$response = $request.GetResponse()
$dataStream = $response.GetResponseStream()
$reader =new-object System.IO.StreamReader($dataStream)
$responseFromServer = $reader.ReadToEnd()
$response.close()
$dataStream.close()
$responseFromServer


Pre pohodlnú komunikáciu je dobré si zvolit jeden zo štandardov. ja som si zvolil můj oblúbený JSON.
náš php kód si zmením na :

echo
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
;
?>


kód v PS

Add-Type -Assembly System.ServiceModel.Web,System.Runtime.Serialization

function Convert-JsonToXml([string]$json)
{
$bytes = [byte[]][char[]]$json
$quotas = [System.Xml.XmlDictionaryReaderQuotas]::Max
$jsonReader = [System.Runtime.Serialization.Json.JsonReaderWriterFactory]::CreateJsonReader($bytes,$quotas)
try
{
$xml = new-object System.Xml.XmlDocument

$xml.Load($jsonReader)
$xml
}
finally
{
$jsonReader.Close()
}
}

$wc = new-object net.WebClient
$url="www.test.sk/request.php"
$probe = $wc.downloadData($url)
$str = [text.encoding]::utf8.getString($probe)

$xml = Convert-JsonToXml $str
echo $xml.root.glossary.title
echo $xml.root.glossary.GlossDiv.title
echo $xml.root.glossary.GlossDiv.GlossList.GlossEntry.GlossTerm


NAPSAL Tito 100

Hodnocení +18Líbí
Přečteno 194-krát

Komentáře

Přidat nový



Pro přispívání musíte být přihlášen


Zapsal Likandro - 01.01.2012 21:43



Kvůli spamu jsem musel nahradit Titův článek novým.




Poslední komentáře

Sousední akvárko

Nejčtenější

Nejlepší

Web Kreveta.net je unikátní sbírkou článků mapují proces tvorby her. Vedle návodů naleznete v krevetím akvárku i rozhovory s vývojáři, recenze, soutěže. Portál Kreveta.net připravují (řazeno abecedně): Akhera, Banane4joy, Bullet_catcher, Burák, Fire.js, Ikkju, Izual, Likandro, Makan, PepiCzech, StorN, Tior.
Akvárko vymaloval Tior, o chod filtrace se stará StorN (design a kód).
Copyright © 2010 Kreveta.net. Všechna práva vyhrazena.