tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: AxWebBrowserで Post経過2
投稿日: 2005/09/15(Thu) 13:54
投稿者魔界の仮面弁士
私も、AxWebBrowser での POST 処理を行っていますが、
その手順自体は、大きく間違ってはいないと思いますよ。

ただ、送信するデータについては、相手がByRef定義なので、
  Dim postDataBytes() As Byte = 送信するバイト配列
ではなく、
  Dim postDataBytes As Object = 送信するバイト配列
で渡した方が無難かと思いますけれども。(他の引数のデータ型にも注意)


> 送信しているpostDataは
> uname=*****&pass=*******&op=login となっています
VBから送信した時点のデータではなく、むしろ、Web側に届いている結果を
確認した方が良いかと思いますよ。

さしあたり、サーバ側のログを確認する事はできますか? できないようであれば、
フリーソフトの「InetSpy」などを使って、通信内容を比較してみてください。


> するとVB6で送っているpostDataは
> ?????#慰?椽??潮???? となっていました これだとログオンできます
これ、SJISデータやASCIIテキスト、UTF-16とみなして表示した場合の化け方に似ていますね。
Unicodeバイナリではなく、SJISバイナリを、MsgBoxやDebug.Print等で確認してはいませんか?

送信するデータは、最終的には String ではなく、Byte() として渡されるのですから、
文字列ではなく、バイナリの値として比較チェックされた方が良いかと。


> vbFromUnicodeについては.netでは相当する定数はないようですね
意味として近いのは、System.Text.Encoding.Default.GetBytes() でしょうかね。


> エンコードの方法を変えなくてはならないのでしょうか
IEから/VB6から/VB.NETから送信されるデータが、それぞれまったく同質であるなら、
Webサーバから得られる結果も、本来は同等の物となるはずですよね。
(逆に、異なるデータを送っていたなら、結果もおのずと変わるでしょうけれども)

つまり、エンコードの手法はどうあれ、最終的に生成した『バイト配列の内容』が、
VB6版とVB.NET版とで同じになっていれば、POST処理は成功するはずです。

なのでまずは、「どのようにエンコードするか」という点については後回しにして、
> uname=*****&pass=*******&op=login
を表す『バイト配列』を固定的に作成し、それを WebBrowser.Navigate して、
それが VB6 と VB.NET とで同じ結果になるのかを確認した方が良いでしょう。

同じデータをNavigateに渡した時に、同じ結果が得られるのであれば、あとは
そのエンコード方法のみを調査すれば済むわけですし、逆に、同じデータでも
結果が異なってしまうなら、エンコード方法以外の部分――たとえば引数の渡し方や
データ型、あるいはタイプライブラリの内容など――を見直す必要がありますよね。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。