質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

1027閲覧

VBS Serverで実行すると動作しない

buburu

総合スコア1

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2022/10/19 00:12

前提

VBSでクラウドサービスからAPIでデータをCSVファイルでダウンロードするプログラムを作成しました。
Windows10(64bit)で正常に実行できていますが、Server2012R2上で実行するとAPIが通らなくなります。
通常はレスポンスが返ってくるのですが、Server2012R2上では応答が返ってこない。

実現したいこと

Server2012R2上で動かない原因を知りたい。

発生している問題・エラーメッセージ

APIで取得したデータをCSVで保存するようにしているが、Server2012R2実行後のCSVを見ると中身が空であり、データを取得できていないと判断しています。

該当のソースコード

VBScript
Dim access_token Dim url Dim DOMAIN Dim SCHEMA Dim apiType Dim VERSION '****************************************************** '接続先URLに利用する設定 '// https://DOMAIN/SCHEMA/api/API種別/version/VERSION DOMAIN = "xxxxxxxxxx.jp" SCHEMA = "aaaaa" apiType = "csvexport" VERSION = "v1" '****************************************************** '対象のファイルのパスを指定 url = "https://" + DOMAIN + "/" + SCHEMA + "/api/" + apiType + "/version/" + VERSION 'アクセストークン設定 access_token = "" 'クラウドサービス指定のパラメータ paramStr = "{ ""dbSchemaId"": ""101147"", ""searchId"": ""103591"", ""listId"": ""101019"", ""limit"": ""200""}" Dim TargetFileName Dim objHTTP Dim objStream Dim paramStr Dim retCd '****************************************************** '保存するファイル名と保存先パスの指定 TargetFileName = "dl_pj_new_anken.csv" PATH= "C:\API\DATA\PJ_INFO\" '****************************************************** on error resume next Dim objweb Dim wkFileName Dim objADO Dim res '保存するパスの編集 'saveFilePath = PATH & "\" & TargetFileName saveFilePath = PATH & TargetFileName err.clear Set objweb = CreateObject("MSXML2.ServerXMLHTTP.6.0") objweb.Open "POST", url, False objweb.setRequestHeader "Content-Type", "application/json; charset=utf-8" objweb.setRequestHeader "X-HD-apitoken", access_token objweb.send paramStr '結果を取得 res = objweb.responseBody 'デバッグ用 実行結果の表示(本番ではコメントアウト) 'WScript.Echo objweb.status & " " & objweb.StatusText '取得した内容をファイルに保存する set objADO = CreateObject("ADODB.Stream") objADO.Type = 1 objADO.Open() objADO.Write(res) objADO.SaveToFile saveFilePath, 2 '2:上書き保存 objADO.Close Set objADO = Nothing Set objweb = Nothing WScript.Quit

試したこと

WScript.Echo objweb.status & " " & objweb.StatusText
のコメントを外してAPIのレスポンスを確認し、Windows10だと200=OKが返ってくるが、Server2012R2だと何も応答が返ってこない。
Windows10、Server2012共に社内プロキシを通っているので、相手先のIPアドレス制限で拒否されていることはない。
該当のクラウドサービスにデータを送信するVBSプログラムはServer2012R2でも正常に動作しているので通信上の問題はないと思われます。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2022/10/19 00:39

もっと簡単なVBSなら動作するのですか? msgbox "Hellow World" 的な
退会済みユーザー

退会済みユーザー

2022/10/19 00:42

Fiddler などのツールを使ってうまくいく時とダメな時の要求・応答をキャプチャして違いを調べるとそこに解決のためのヒントが見つかると思いますのでやってみましょう。
KOZ6.0

2022/10/19 00:43

うまくいっている vbs と比較して違う部分がありませんか? setProxyとかしてないでしょうか? Windows10 と Server 2012 でインターネットオプションの比較もしてみたほうがいいでしょうね。
buburu

2022/10/19 00:55

Win10で動作確認したscriptをそのままServerにコピーして使用していますので、コードに違いはありません。 当該クラウドサービスにデータを送るAPIはServerでも実行できているので、ネットワークインターネットオプションの設定としては問題ないかと思います。
matukeso

2022/10/19 02:35

tlsの対応が怪しい感じ。2012r2のSercerXMLHTTPがtls1.0を喋ったりしてない?
buburu

2022/10/19 03:18

https://qiita.com/aratana_ogawa/items/609953a85d713759610e こちらのサイトを参考にテストしてみましたがServer2012R2上だとタイムアウトになりました。 matukeso さんの >tlsの対応が怪しい感じ。2012r2のSercerXMLHTTPがtls1.0を喋ったりしてない? どの辺を確認すれば良いでしょうか。IEの詳細設定を見る限りTLS関連の設定はWin10とServerが一緒でした。
guest

回答1

0

自己解決

あまり詳しくないので正解なのか分かりませんが
Set objweb = CreateObject("MSXML2.ServerXMLHTTP.6.0")
の部分を
Set objweb = CreateObject("MSXML2.XMLHTTP")
にしてみたら実行できました。
とりあえずこれで使ってみたいと思います。

投稿2022/10/19 03:38

buburu

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問