DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB.NETで、POSTでデータを送信する方法について

環境/言語:[OS : Windows Vista / 言語 : Visual Basic .NET / .NET Framework : 3.5]
分類:[.NET]

【解決したい問題】

いつもお世話になります。

VB.NETで、POSTでデータを送信する方法について、質問です。

.NET Tipsの「POSTでデータを送信する」(http://dobon.net/vb/dotnet/internet/webrequestpost.html)を参考にして、
「IT用語辞典 e-Words」から「インターネット」という言葉を調べ、
その結果を取得し、表示しようとしております。

参考にしたソースは、
HttpWebRequestとHttpWebResponseを使った方法
(一番上のVB.NETのサンプルコード)です。

しかし、実行すると、以下の箇所でエラーが発生してしまい、
うまくいきませんでした。


'サーバーからの応答を受信するためのWebResponseを取得
Dim res As System.Net.WebResponse = req.GetResponse()

エラー内容
基礎になる接続が閉じられました: 受信時に予期しないエラーが発生しました ---> System.IO.IOException: 転送接続からデータを読み取れません: 既存の接続はリモート ホストに強制的に切断されました。


【解決するために何をしたか】

解決方法についてGoogleで検索し、次のページを参考にして、
以下の2箇所を修正しました。
参考ページ:WebRequest/WebResponseクラスでPOSTメソッドによりデータを送信するには?
(http://www.atmarkit.co.jp/fdotnet/dotnettips/318webpost/webpost.html)

<修正1>
'WebRequestの作成
Dim req As System.Net.WebRequest = _
System.Net.WebRequest.Create("http://www.e-words.ne.jp/search.asp")

⇒<修正後>
Dim req As System.Net.WebRequest = _
System.Net.WebRequest.Create("http://e-words.jp")
(修正理由:修正前の接続先にアクセスしても、接続できなかった為)

<修正2>
'POST送信する文字列を作成
Dim postData As String = _
"inlang=ja&word=" + _
System.Web.HttpUtility.UrlEncode("インターネット", enc)

⇒<修正後>
Dim postData As String = _
"cx=partner-pub-1175263777233757:xelkt7-c6j8" + _
"&" + "cof=FORID:10" + _
"&" + "ie=Shift_JIS" + _
"&" + "q=" + System.Web.HttpUtility.UrlEncode("インターネット",enc)
(修正理由:POSTに必要な情報が足りないと考え、追加)

上記のように修正した結果、エラーの内容は、以下のようになりました。
しかし、うまくいくことはありませんでした。

エラー内容
リモート サーバーがエラーを返しました: (405) メソッドは使用できません


【追加事項】

当方、VB.NETでの開発経験はありますが、
HTTPサーバーおよびVB.NETとの連携についての経験は無く、
独学で勉強している状況です。
そのため、見当違いの修正をしているのかもしれません。

正しく動作するよう、ご教授のほど、よろしくお願いいたします。
e-Words って、そもそもPOSTじゃなくてGET使ってるのでは?
■No28496に返信(Hongliangさんの記事)
> e-Words って、そもそもPOSTじゃなくてGET使ってるのでは?

Hongliangさん
そうなのですか?DOBONさんの.NET Tipsで、POSTでデータを送信する方法として
載っていたので、てっきりPOSTで問題無いと思っていましたが・・・

GETを使った方法も試してみます。
(私事のため、実際に試すのは、週末になります。)

ご教授、ありがとうございます。
> そうなのですか?DOBONさんの.NET Tipsで、POSTでデータを送信する方法として
> 載っていたので、てっきりPOSTで問題無いと思っていましたが・・・

以前と検索フォームが変わってしまったようですね。近いうちに書き直します。

DOBON.NET | プログラミング道 | プログラミング掲示板