VBでpostを試しています。オークファンへのloginする部分書きましたができませんでした。どこが悪いか教えてください。

参考 http://www.atmarkit.co.jp/fdotnet/dotnettips/326cookie/cookie.html

Shared encoder As Encoding = Encoding.GetEncoding("EUC-JP")
Shared Function Login(ByVal id As String, ByVal password As String, ByVal cc As CookieContainer) As String
' ログイン・ページへのアクセス
Dim vals As Hashtable = New Hashtable()
vals("id") = id
vals("pw") = password

Dim loginUrl As String = "https://ssl.aucfan.com/member/login"
Return HttpPost(loginUrl, vals, cc)
End Function

文字制限のためすべてをかけないので後で追記で書きます。参照ください。

回答の条件
  • 1人20回まで
  • 登録:2009/03/20 15:16:44
  • 終了:2009/03/27 15:20:02

回答(1件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/03/20 15:51:48

ポイント60pt

コメント部分のソースで req.CookieContainer = cc を実行する前に、

CookieContainerクラス cc が用意されていません。

id:mai_mai_mail

500文字の制限があるためソースのすべてをかけませんでした。実際にはMAINの部分に

Dim cc As CookieContainer = new CookieContainer()

としています。また、参考のURLと同じようにしています。

2009/03/20 16:17:29
  • id:mai_mai_mail
    Shared Function HttpPost(ByVal url As String, ByVal vals As Hashtable, ByVal cc As CookieContainer) As String
    Dim param As String = ""
    'For Each k As String In vals.Keys
    'param += String.Format("{0}={1}&", k, vals(k))
    'Next
    param = "id=mkobayashi@goodluck2you.jp&pw=yag1yagi"
    Dim data As Byte() = Encoding.ASCII.GetBytes(param)

    ' リクエストの作成
    Dim req As HttpWebRequest _
    = CType(WebRequest.Create(url), HttpWebRequest)
    req.Method = "POST"
    req.ContentType = "application/x-www-form-urlencoded"
    req.ContentLength = data.Length
    req.CookieContainer = cc

    ' ポスト・データの書き込み
    Dim reqStream As Stream = req.GetRequestStream()
    reqStream.Write(data, 0, data.Length)
    reqStream.Close()

    Dim res As WebResponse = req.GetResponse()

    ' レスポンスの読み取り
    Dim resStream As Stream = res.GetResponseStream()
    Dim sr As StreamReader = New StreamReader(resStream, encoder)
    Dim result As String = sr.ReadToEnd()
    sr.Close()
    resStream.Close()

    Return result
    End Function
  • id:pahoo
    回答と関係ないのですが、上記コメントにおいてIDとパスワードを晒しているようです。
  • id:pahoo
    「できませんでした」というのは、具体的にどのような状況なのか、エラーメッセージは出ているのか、お知らせください。
  • id:mai_mai_mail
    出来ない理由を書きます。

    ①クッキーは空である。
    ②HttpPost関数内のGetResponseStreamでとってくる内容はログイン画面である。本来はメンバーのページに移動すると思われる。

    以上、簡潔ですがよろしくお願いします。
  • id:mai_mai_mail
    USERIDとPASSWORDは適切に入力しています。デバックしていてもPARAMに正しく代入されています。
  • id:pahoo
    そのサイトは、そもそも、IDとパスワードをPOST送信すると、適切なCookieが設定されるような仕様になっているのですか?
    また、メンバーのページへジャンプする命令を書いてやらなければ、移動することはできません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません