CGIのPOSTによるデータ取得


冬馬  2004-03-15 20:22:54  No: 112359  IP: [192.*.*.*]

現在イントラネットで文書が公開されているのですが
CGIの受け渡し方法がPOSTであるため、
GETの時のようにURLを変更してHTMLデータが取得できません。
VB6なのですが、どなたかご教授していただけないでしょうか?

編集 削除
魔界の仮面弁士  2004-03-15 22:00:38  No: 112360  IP: [192.*.*.*]

VB6で良く使われる物としては、

  InetコントロールのExecuteメソッド
  WebBrowserコントロールのNavigate2メソッド
  XMLHTTPオブジェクトのopenメソッド

などが、POSTメソッドによるデータ転送に対応していますので、それらを利用されると良いでしょう。

例えば、XMLHTTPを利用する場合は、
  Set X = CreateObject("MSXML2.XMLHTTP")
  X.Open "POST", "http://〜〜/", False
  X.send "name=hoge"
という感じですね。

編集 削除
魔界の仮面弁士  2004-03-15 22:03:30  No: 112361  IP: [192.*.*.*]

あ、Content-Typeを指定するのを忘れていました。m(_ _)m

  Set X = CreateObject("MSXML2.XMLHTTP")
  X.Open "POST", "http://〜〜/", False
  X.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  X.send "name=hoge"
  'この後で、responseBodyプロパティ等を使って内容を読み出す

編集 削除
ぱたぱた  2005-03-03 23:06:02  No: 112362  IP: [192.*.*.*]

便乗質問すみません。
魔界の仮面弁士さんの書いたソースで、CGIにPOSTでデータを送ることができました。しかし全角文字を送ると文字化けが出ます。

Set X = CreateObject("MSXML2.XMLHTTP")
  X.Open "POST", "http://〜〜/", False
  X.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  X.Send "item=モニター"

を送ると、「繝「繝九ち繝シ」と表示されてしまいます。
解決方法がありましたらご伝授願います。

編集 削除
いな  2005-03-04 00:16:02  No: 112363  IP: [192.*.*.*]

文字化けする時には、
化けてしまう文字列のエンコードが何か意識しましょう。
確認すればおのずと解決は出来るはず。

編集 削除
ぱたぱた  2005-03-07 21:34:07  No: 112364  IP: [192.*.*.*]

いなさん、返答ありがとうございます。
windowsは、S-JIS?。ホームページは、EUC-JPだったので、その違いかな?と思い、VBでEUC-JPに変換するプログラムを探したのですが、見つかりませんでした。
もうちょっと探してみようと思っていますが、方向的に合っていますか?
ホームページの方をS-JIS変更することは出来なかったので、VBの方を変えるしかないと思うのですが・・・

編集 削除
魔界の仮面弁士  2005-03-10 09:38:58  No: 112365  IP: [192.*.*.*]

まず、InetSpyなどを使って、ブラウザからの送信時には、どのようなデータ(送信ヘッダ & ボディ)が送られているのかを確認しましょう。まずはそこからです。


POSTするフォーム側の記述によって、送信データが(データがEUC-JPなのか、Shift_JISなのか、UTF-8なのかといった問題とは別で)、元のバイナリが無変換で送られる場合もあれば、内容がURLエンコードされて送信される場合もありますので。


なお、文字コードの変換については、ADODB.Streamオブジェクトを使う事ができます。過去ログで探してみてください。

編集 削除
ぱたぱた  2005-03-10 20:18:52  No: 112366  IP: [192.*.*.*]

魔界の仮面弁士さん返答ありがとうございます。

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200401/04010054.txt
の魔界の仮面弁士さんのプログラムでできる様になりました。
ありがとうございます。

便乗質問なので、解決はチェックできませんが、ぱたぱた的に解決しました。

編集 削除