VisualBasic 2008 .NETでのHTTPサーバーへのPOST要求送信について

このQ&Aのポイント
  • VisualBasic 2008 .NETを使用してHTTPサーバーへPOST要求を送信するプログラムを作成していますが、うまく動作しません。
  • 仕様書には、クライアントからサーバーへの要求URLは「https://ABC.co.jp」、要求HEADERは「POST https://ABC.co.jp HTTP/1.0」、要求BODYは「A=1234」と指定されています。
  • 上記のプログラムでは、エラーが返ってきます。問題の箇所を教えていただきたいです。
回答を見る
  • ベストアンサー

HTTPサーバーへPOST要求を送信について

はじめまして、ひろです。 VisualBasic 2008 .NETでHTTPサーバーへPOST要求を送信する プログラムを作成しているのですが、うまく動作しません。 仕様書でクライアントからサーバーへ 要求URL:https://ABC.co.jp 要求HEADER:POST https://ABC.co.jp HTTP/1.0 要求BODY:A=1234 POST要求するよう指示されているのですが、 下記のようなプログラムではERRORが返ってきます。 問題ある箇所がわかる方いらっしゃたら、 教えてほしいのですが。 よろしくお願いします。 Sub aaabbb() Dim objXML As Object Dim strXMLDoc As String Dim intRet As Integer Dim strURL As String Dim strKey As String strURL = "https://ABC.co.jp" strKey = "A=1234" objXML = CreateObject("MSXML2.ServerXMLHTTP") objXML.open("POST", strURL, False) objXML.send(strKey) strXMLDoc = objXML.responseText intRet = objXML.status objXML = Nothing End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • unamana19
  • ベストアンサー率62% (56/89)
回答No.1

>下記のようなプログラムではERRORが返ってきます。 どこで、どのようなエラーが帰ってくるのでしょうか? httpsと言うことなので、公開鍵証明書(cer)が必要なんじゃないかな。

hiro300
質問者

お礼

原因はわかりませんが、 strKey = "A=1234"の"A="をobjXML.send("A=" & strKey)にしたところ 異常がなくなりました。 ありがとうございます。

hiro300
質問者

補足

言葉足らず申し訳ありません。 objHTTP.statusでは"200"で返信がきていますので、 HTTPのやり取り上は問題はないと思うのですが、 サーバーからの返信の内容が異常で、 A=1234という部分がパラメータとしてサーバーに送信しているのか、 プログラム上あっているのかが疑問でした。 早速の回答ありがとうございます。 公開鍵証明書ですか。調べてみます。

関連するQ&A

  • vbaからHTTP POST送信しても途中までしかレスポンスが返らない

    Excel2003 VBAからマクロでHTTP POST通信を行いたいと思いますが、リターンコードが200でも979バイトしか取得できません。原因わかる方教えてください。通信状況に関係なく979バイトです。 Dim URL As String Dim WinHttp As Object Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1") URL = "http://wwww.aaa.com/login" WinHttp.Open "POST", url, False WinHttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" WinHttp.Send "&username=test&password=abc" If WinHttp.Status < 200 And WinHttp.Status > 399 Then GetUrl = False Exit Function End If MsgBox WinHttp.Status MsgBox WinHttp.ResponseText 取得したデータの最後は <td>&nbsp;&nbsp;&n です。 何卒宜しくお願いします。

  • フレーム分割のソース表示プログラムについて

    以前次のようなプログラムを作ったのですが、これはURLを入力するとブラウザのソースを表示するものなので、フレームによって分割されたページのソースはすべて表示させることができません。このプログラムに何か追加して分割されていてもソースが表示できるようにしたいのですが。新たにコマンドを作ってやるしかないのでしょうか?何かアドバイスお願いします。 Private Sub Command1_Click() Dim strUrl As String Dim strBuf As String Command1.Enabled = False strUrl = InputBox("URLを入力して下さい.") If (Len(strUrl) = 0) Then Exit Sub End If Command1.Enabled = True strBuf = Inet1.OpenURL(strUrl) Form2.Show Form2.Text1.Text = strBuf End Sub Function Getsource() As String Dim strBuf As String Dim strUrl As String Dim strUrl2 As String strBuf = Inet1.OpenURL(strUrl) 'ファイル内容を取得 strUrl2 = InStr(strBuf, "frame src=") If strUrl2 > 0 Then strUrl3 = Mid(strBuf, strUrl2, 100) strUrl4 = Mid(strUrl3, 1, l) Getsource = strBuf End Function

  • 保存の仕方

    こんにちは、次のようなアドレスを入力するとそのソースを表示するプログラムを作ったのですがこれで表示されるソースに名前を付けて保存することってできますか?お願いします。 Private Sub Command1_Click() Dim strUrl As String Dim strBuf As String Command1.Enabled = False strUrl = InputBox("URLを入力して下さい.") If (Len(strUrl) = 0) Then Exit Sub End If Command1.Enabled = True strBuf = Inet1.OpenURL(strUrl) Form2.Show Form2.Text1.Text = strBuf End Sub Function Getsource() As String Dim strBuf As String Dim strUrl As String strBuf = Inet1.OpenURL(strUrl) 'ファイル内容を取得 Getsource = strBuf End Function

  • ソース内の文字検索について

    下にHPのソースを表示させるプログラムがあります。 これで表示されたソースの中からある文字を検索したいのですが、それってできますか?どうしたらいいんでしょうか、お願いします。 Private Sub Command1_Click() Command1.Enabled = False Text1.Text = GetSource() Command1.Enabled = True End Sub Function GetSource() As String Dim strBuf As String Dim strURL As String strURL = "http://www.microsoft.com/japan/ms.htm" strBuf = Inet1.OpenURL(strURL) GetSource = strBuf End Function

  • FTPサーバからダウンロードするには?

    windowsXP,VB6,SP5で開発しています。 下のコードはヘルプからなんですが、 これをURLとファイル名を変更してやってみても、全然できません。 Private Sub Form_DblClick() Inet1.AccessType = icUseDefault Dim b() As Byte Dim strURL As String ' この URL は有効な URL であると仮定します。 strURL = "ftp://ftp.microsoft.com/" & _ "developr/drg/Win32/Autorun.zip" ' ファイルをバイト配列として取得します。 b() = Inet1.OpenURL(strURL, icByteArray) Open "C:\Temp\Autorun.zip" For Binary Access Write As #1 Put #1, , b() Close #1 MsgBox "完了しました。" End Sub ここの部分でタイムアウトになってしまいます。 b() = Inet1.OpenURL(strURL, icByteArray) FTPサーバのアドレスとかちゃんとあってます。 どなたか、解決方法をご教授くださいませm(_ _)m

  • プログラムについて

    今このようなプログラムを作っているのですが、わからなくて困っています。 Private Sub Command1_Click() Command1.Enabled = False 'タイマー無効 Text1.Text = GetSource() Command1.Enabled = True 'タイマー有効 Msg = "アドレスを入力して下さい" Title = "URL入力" Ret = InputBox(Msg, Title, "") End Sub Function GetSource() As String Dim strBuf As String Dim strURL As String strURL = "http://www.microsoft.com/japan/ms.htm" strBuf = Inet1.OpenURL(strURL) 'ファイル内容を取得 GetSource = strBuf End Function InputBoxにアドレスを書いてOKを押すと別ウィンドウでソースが表示されるプログラムを作りたいんです。お願いします。

  • HTTP接続すると文字化けがおこってしまいます

    VB2005です。 HTTPサーバーに接続してデータをテキストボックスに書き出す処理なのですが、どうしても文字化けしてしまい困っています。どうしたらよいでしょうか? Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' HTTPサーバーへ接続する Dim client As New WebClient Try ' HTTPサーバーへ接続しストリームを取得する Dim stream As System.IO.Stream = _ client.OpenRead(TextBox1.Text) ' テキストボックスへ結果を書き出す Dim reader As New System.IO.StreamReader(stream) TextBox2.Text = reader.ReadToEnd() reader.Close() stream.Close() Catch ex As WebException ' URLが不正の場合は例外が発生する MessageBox.Show(ex.Message) End Try End Sub

  • 別サーバへのクライアント入力情報のポスト

    クライアントPCからHTTP POST で一旦サーバAで受け取った情報をサーバAから別のサーバBのサーブレットへPOSTするプログラムはどのように記述すればいいのでしょうか?サーバBではサーバAのIPアドレスをチェックするためクライアントPCからサーバBに直接POSTできません。 プログラムサンプルなどがあれば助かります。 なお、サーバAはMS NT4.0 IIS4です。 クライアントPC    ----->     サーバA  -----> サーバB          http POST HTTP POST よろしくお願いします。

  • VB6でテレビ番組表HTMLの保存

    VB6の以下のプログラムで下記URLのテレビ番組表を保存しようとしたのですが、うまくできませんでした。ソースを開いてみるとEUC-JPとなっていまして、これが原因かと思うのですが、保存するにはどうしたら良いでしょうか? よろしくお願いします。 ■URL http://tv.nikkansports.com/tv.php?site=007&mode=06&category=g&area=025&template=time&sdate=20081226&lhour=24&shour=5&arg=05 ■プログラム Private Sub Command1_Click() Dim strURL As String ' 取得URL Dim strFileName As String ' ファイル名 ' URLとファイル名を代入する strURL = Text1.Text strFileName = Text2.Text ' 指定されたURLのドキュメントをファイルに出力する Open strFileName For Output As #1 Print #1, Inet1.OpenURL(strURL) Close #1 MsgBox strURL & "を" & strFileName & "に出力しました" End Sub

  • WinInet.dll で HTTPS へ POST できません

     WinInet.dll を使って、HTTPS サーバーへデータを POST するプログラムを作っています。開発言語は VB6 です。  HttpSendRequest で 12029 エラーとなり原因が分かりません。  HTTP 通信テストツールの RESTTEST を使ったテストでは正常に終了しています(HTTPステータス 200 が返っている)ので、回線やインターネット設定(ファイヤーウォールの問題など)は問題ないと思われます。  ソースから手続きの部分だけ抜き出して、下記に示します。  (エラーチェックなどはソース上にはありますが、ここでは省いています)  手続き上何か抜けが無いかご指摘いただけると助かります。   'インターネットサービスをオープンする   lngWinINet = InternetOpen(vbNullString, _                INTERNET_OPEN_TYPE_PRECONFIG, _                vbNullString, _                vbNullString, _                0)   'HTTPサーバへ接続   lngHttpHnd = InternetConnect(lngWinINet, _                  "www.test.jp", _                  INTERNET_DEFAULT_HTTPS_PORT, _                  vbNullString, _                  vbNullString, _                  INTERNET_SERVICE_HTTP, _                  0, _                  0)   'リクエストを初期化   Dim tmpURL As String * 255   Dim lngSecFlag As Long   lngSecFlag = INTERNET_FLAG_SECURE Or _          INTERNET_FLAG_IGNORE_CERT_CN_INVALID Or _          INTERNET_FLAG_IGNORE_CERT_DATE_INVALID   tmpURL = "/testdir/test.php"   lngReqHnd = HttpOpenRequest(lngHttpHnd, _                 "POST", _                 tmpURL, _                 "HTTP/1.1", _                 vbNullString, _                 0, _                 INTERNET_FLAG_RELOAD Or lngSecFlag, _                 0)   'リクエストを送信   Dim strHeader As String   Dim strPostData As String   strHeader = "Content-Type: application/x-www-form-urlencoded"   strPostData = "TEST1=aaa&TEST2=bbbbb"   Call HttpSendRequest(lngReqHnd, _              strHeader, _              Len(strHeader), _              strPostData, _              Len(strPostData))  手続き部分は、順番も含めて上記の通りです。  これ以外のことはやっていません。  これ以外にやっておかなければいけないことや、上記のやり方ではよくない部分などありましたら、ご教授いただけると助かります。  よろしくお願いします。

専門家に質問してみよう