JDBな人生  専門的なことから日常的なことまで~ まぁ自由きままに書いていきます。
2017年07月 / 06月<< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>08月

アクセスランキング

[ジャンルランキング]
コンピュータ
296位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
33位
アクセスランキングを見る>>

Cookieを添えてPOSTした後レスポンスのCookieを取得する

タイトルの表現がわかりにくいのはあまり気にしないでください。「POSTで値を送信」「Cookieを添える」「レスポンスのCookieを取得」の三つを一文にまとめたらこうなりました。

その方法ですが、ググってもこれというサンプルコードもなかったので、とりあえず書いてみました。もっと簡潔に書けると思うんですが・・・。
'Cookieを入れる変数「CookieData As System.Net.CookieContainer」が宣言されているものとします

'↓送信するデータを入れる(URLエンコードしておく)
Dim SendData As String = "mode=new&id=00000019&title=%e6%98%8e%e6%97%a5%e3%81%ae%e5%a4%a9%e6%b0%97"
Dim SendDataBytes() As Byte = System.Text.Encoding.ASCII.GetBytes(SendData)

Dim WebReq As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(<URL>)

WebReq.CookieContainer = CookieData
'↑送信するCookieがある場合はここで指定
'↓無い場合はとりあえずnew
'WebReq.CookieContainer = New System.Net.CookieContainer

WebReq.Method = "POST"
WebReq.ContentType = "application/x-www-form-urlencoded"
WebReq.ContentLength = SendDataBytes.Length

Dim ReqStream As System.IO.Stream = WebReq.GetRequestStream
ReqStream.Write(SendDataBytes, 0, SendDataBytes.Length)
ReqStream.Close()

Dim WebRes As System.Net.HttpWebResponse = WebReq.GetResponse

'↓受信したCookieを入れる
CookieData = WebReq.CookieContainer

Dim ResStream As System.IO.Stream = WebRes.GetResponseStream
Dim StrReader As New System.IO.StreamReader(ResStream, System.Text.Encoding.GetEncoding("utf-8"))
Dim ResText = StrReader.ReadToEnd()
'↑本文は「ResText」に格納
StrReader.Close()

こんな感じです。

「Class System.Net.CookieContainer」は、「Class System.Net.Cookie」の配列になっています。
その「System.Net.Cookie」ですが、「Name」と「Value」というプロパティを持っていて、それぞれCookieの「a(Name)=b(Value)」を表します。


一応、これをコピペしたときどこを変えれば使いまわせるかわかるように、下線を付けておきました。

このサンプルソースをコピペする以前にそもそもCookie添えでPOSTして返ってきたCookieを取得するなんていう処理をすること自体あまりないかもしれませんが、まあ参考にできるのであればご自由に使ってください。


#久しぶりにVB.NETで書いてみました。どうも自分はフォームアプリケーションの開発には向いていないと思います。はい。だからと言ってコンソールアプリケーション作りたいとも思いませんが。慣れの問題ですかね・・・。
 


 
   VB.NET    TB(0)    CM(1)    EDIT    ページ↑

コメント投稿


 管理者だけに表示

コメント

[ forex trading ]
このことについて話すように誠実な試みをしていただきありがとうございます。私はそれについて非常に強く感じており、より読みしたいと思います。それがOKなら、あなたが余分な豊富な知恵を達成するように、追加情報とこれに似た追加の記事を含めて気にできますか?それは非常に有用と私と私の友人の助けになります。
2013年02月09日(土) 03:08

トラックバック

この記事へのトラックバック:

プロフィール

JDB Luigi

Author:JDB Luigi
どこにでもいるようなありふれた人間・・・という訳でもなく、かと言って怪しい宗教を信仰する変人という訳でも無い。

基本的に掲載しているコード等は煮ていただいても焼いていただいても結構ですが、利用は自己責任にてお願いいします。
また、バグ・アドバイス等もしあればよろしくお願いします。