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))
手続き部分は、順番も含めて上記の通りです。
これ以外のことはやっていません。
これ以外にやっておかなければいけないことや、上記のやり方ではよくない部分などありましたら、ご教授いただけると助かります。
よろしくお願いします。
お礼
原因はわかりませんが、 strKey = "A=1234"の"A="をobjXML.send("A=" & strKey)にしたところ 異常がなくなりました。 ありがとうございます。
補足
言葉足らず申し訳ありません。 objHTTP.statusでは"200"で返信がきていますので、 HTTPのやり取り上は問題はないと思うのですが、 サーバーからの返信の内容が異常で、 A=1234という部分がパラメータとしてサーバーに送信しているのか、 プログラム上あっているのかが疑問でした。 早速の回答ありがとうございます。 公開鍵証明書ですか。調べてみます。