ブログ移転のお知らせ

独自ドメインのVPSにブログ移転中です、ここもデータの保証無しってことで置きっぱなしにしてもらえる事になってます。
 
i移転先予定のブログURLはこちら(作成中):http://www.sawanoboly.net/wp/
旧ブログはこちらでも保管しときます:http://www.sawanoboly.net/wp_old/
前の記事:«
次の記事: »

PowerShellでDDNSサービスを更新(1)PowerShellでDDNSサービスを更新(2) 、の続き。
ddo.jp に対してPowerShell で更新をかけようというもの。
 
 

HTTPでクエリストリング付きのGETを送る

PowerShell から WebClient クラスを使ってクエリ文字列をくっつけたGETはどうすればいいのか。
 

単純にくっつけてみる

# 引数格納、URL形式
param([string]$url)

# 途中で例外を吐いたらここに飛び、抜ける
trap [Exception] {
 	echo $error[0].exception
 	break
}

# クエリ文字列を作成
$query = "?dn=hoge.example.jp&pw=piyopiyo"

# .NetFramework の WebClient クラスを拝借
$webCli = New-Object System.Net.WebClient

# コンテンツを取得、無理やりくっつけてみる
$body = $webCli.DownloadString($url + $query)

で、実行してHTTPで送られている内容をキャプチャ。※テストなのでhostヘッダが "sawano.members.icraft.jp"
GET /index.html?dn=hoge.example.jp&pw=piyopiyo HTTP/1.1
 
Host: sawano.members.icraft.jp
Connection: Keep-Alive

あら、これでも送れてるのね。
しかし釈然としない、WebClient クラスには QueryString とかいうプロパティがあるみたいので、それを使うのが普通っぽい。
 
 

WebClient.QueryString で

はて、QueryString を設定するにはどうしたらいいのかね。
連想配列で突っ込んでみたら、案の定怒られた。

# 連想配列でクエリの内容を設定してみる
$query = @{dn = "hoge.example.jp";pw = "piyopiyo"}
$query

# .NetFramework の WebClient クラスを拝借
$webCli = New-Object System.Net.WebClient
$webCli.QueryString = $query

 

Name Value
—- —–
dn hoge.example.jp
pw piyopiyo
"QueryString" の設定中に例外が発生しました:
""System.Collections.Hashtable" を
"System.Collections.Specialized.NameValueCollection" に変換できません。"

 

ほう、左様か。NameValueCollection ってのを使えばいいの?
 

# 引数格納、URL形式
param([string]$url)

# 途中で例外を吐いたらここに飛び、抜ける
trap [Exception] {
 	echo $error[0].exception
 	break
}

# NameValueCollection をマニュアル通り定義してみる
$query = New-Object System.Collections.Specialized.NameValueCollection

$query.add( "dn", "hoge.example.jp" )
$query.add( "pw", "piyopiyo" )

# .NetFramework の WebClient クラスを拝借
$webCli = New-Object System.Net.WebClient

# WebClient の QueryString プロパティを設定
$webCli.QueryString = $query

# コンテンツを取得
$body = $webCli.DownloadString($url)

で、実行とHTTPキャプチャ。
GET /index.html?dn=hoge.example.jp&pw=piyopiyo HTTP/1.1
 
Host: sawano.members.icraft.jp
Connection: Keep-Alive

できたようだ。
 
 
 

これでややこしそうなところは一通り準備がそろった。イベントログ書き出し・メールくらいは如何様にでもなろう。
 

終わりにしようかどうしようか。

前の記事:«
次の記事: »
add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

使ってる所とか

※注意

I
KOBE×
BUSINESS.

これは個人ブログです、内容についてアイクラフト(株)は責任を負いません。
にほんブログ村 IT技術ブログへSawanoblogのフィード
人気ブログランキングへ
この日記のはてなブックマーク数
はてなRSSに追加
Googleに追加
My Yahoo!に追加
livedoor Readerに追加
goo RSSリーダーに追加
フィードメーター - SawanoBlog.
MCP
MCTS
CCNA

ミニブログとか

あわせて読みたいブログパーツ
  • IISのログファイルをUTF-8で記録する
    図:IIS6のログをUTF-8で保存するオプション


    Windowsにはwgetが無くてもtinyget.exeがある
    画像:Yahoo!のロゴ


    初詣で六甲八幡神社へ
    写真:八幡神社拝殿


    Windows、VBScriptでYYYYMMDD
    画像:スクリプトの実行結果


    pythonのコマンド一行WEBサーバは便利、ファイル転送やWEBアプリの確認に
    画像:PythonのSimpleHTTPServerモジュール


    ルミナリエ観賞会を神戸のアイクラフト本社事務所から
    写真:東遊園地その1
  • Amazon用