ExcelVBAからWebAPIを呼び出そうとしているのですが、
エラーが出て先に進めません。
まず最初はこちらの記事を参考に下記のようなコードを実行しましたが、
404:NotFoundになってしまいました。
(もちろんURLとパラメータの形式はよくよく確かめましたので合っているはずです)
VBA
1Public Function KickAPI( _ 2 ByVal request As String, _ 3 ByVal URL As String, _ 4 ByVal param As Object) As Object 5 6 Dim fso As Object 7 Set fso = CreateObject("MSXML2.XMLHTTP") 8 With fso 9 .Open request, URL, False 10 .setRequestHeader "Content-Type", "text/csv" 11 .send (ConvertToQueryString(param)) 12 End With 13 14 Set KickAPI = fso 15End Function 16 17Private Function ConvertToQueryString(ByVal dic As Object) As String 18 19 If dic Is Nothing Then Exit Function 20 Dim key As Variant 21 For Each key In dic.keys 22 If ConvertToQueryString = "" Then 23 ConvertToQueryString = key & "=" & dic.Item(key) 24 Else 25 ConvertToQueryString = ConvertToQueryString & "&" & key & "=" & dic.Item(key) 26 End If 27 Next 28 29End Function
「MSXML2.XMLHTTP Not found」で検索してみると
「MSXML2.XMLHTTPではなくMSXML2.ServerXMLHTTPを使うべき」と言われていたので変えてみたところ、今度は「セキュリティで保護されたチャネル サポートでエラーが発生しました」というエラーになりました。
このエラーを調べるとインターネットオプションの変更が必要とありましたので確認しましたが、最初からリンク先の通りになっていました。
ためしに逆(SSLをオン)にしてみてもだめでした。
何か他に試すべきことがありましたらご教授ねがいます。
9/7 追記
APIの仕様をよくよく確認すると、
404は利用IDが無効な場合に返されるとありました。え、ええー・・・
とはいえブラウザから呼び出すと正常にレスポンスが返ってくるのでIDの問題ではなさそうです。
現在APIの作成元に問い合わせ中です。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。