01時28分16秒HttpWebRequestでCookieを使う先週までのLL漬けからうって変わって、今日から久しぶりに.NETプログラミング。いや~、半年振りくらいのC#だもんで、結構コードかけなくなってるし。明日くらいまではちょっとリハビリ状態かしらん。これ知らずに今日は結構時間使ったのでメモ。.NET1.1だからいまやあまり役にたたん情報かも。手順でコード書いてみたらうまくいかない。Webアプリ側では認証とおってないリクエストはすべてログインフォームがあるページに飛ばすようにしてるんだけど認証リクエストの戻りからすでにログインフォームのコンテンツが返ってきてる状態。おんなじ処理をJScriptでXHR使ってやってみたらこっちは認証とおって目的のデータがちゃんと取れてる。1.1のWebClientはかなり割り切った使い方をするものらしく(いままであんまり使ったことなかった)、URL直接食わせてコンテンツをダウンロードするくらいのインターフェイスしかないみたいなので、不精せずにHttpWebRequestに切り替えてみたんだけどこれも結果変わらず。Webサーバのログを見てみると、一応希望のURLへのアクセスで200を返しているみたいだけどしつこくログインフォームのコンテンツだけが返ってくる。「ひょっとしてヘンなキャッシュ引いてるんじゃね?」とか思ったんだけどどうもそうでもない。レスポンスヘッダ調べてるうちにPHPが返すセッションの値がリクエストごとに違っている。なんだ、そんな話かよ。要するにサーバがCookieセットしようとしてるけどWebRequest側でそれを受け付けてないので、当然認証していないことになってたわけだ。CookieContainerと、ここまでわかったけどはて、どうやってCookieサポートするんだ?でMSDNとにらめっこしてたらHttpWebRequestにCookieContainerやらいうプロパティがあることを発見。クラスのインスタンスを提供します。オブジェクトをそのプロパティに割り当てる必要があります。わかるようなわからんような記述がある。HttpWebRequestでCookieの文言があるメンバも他に見当たらんし、これを使ってみるのかな。このCookieContainerプロパティは型がまんま「System.Net.CookieContainer」クラスで、これがパラメータなしコンストラクタをサポートしてるので、こんな感じのコードを書いてみた(注:コード未検証。抜けとか間違いあるかも)。データを取得}で試してみると、これで正解だったみたい。いやー、わからんかった。定番処理っぽいちと時間くったけど、まぁ最悪「MSXMLをtlbimpするかぁ?」とか考えてたワケで、それに比べればマシなのでほっとしてたんだけど、あとでなんとなくぐぐってみたらいっぱい引っかかるじゃん。吊ブックマークレットtumblrのキーボードショートカットが便利になっとる。Chrome編dataスキームの画像をブロックしてみるローカルストレージを確認したり消したりするブックマークレットそうそう、いまさらTwitter始めました。(9)このブログについてJavaScriptとかC#とかPHPとか。