次の方法で共有

Win7でWinHTTPが応答しない

Anonymous
2011-04-12T08:08:20+00:00

WinXP+Office2007の環境で動作していたExcelマクロがWin7+Office2007でのみエラーが発生します。

※Vista環境では動作します。

ExcelマクロはWindowsServer2003R2(IIS6.0)にPOSTしています。

現在、WinHttpでsendを実行した時点で、エラーが発生している状況です。

エラーコード:-2147012744(80072F78)

エラー内容:無効または認識されない応答をサーバーが返しました

XPとVistaでは正常に動作しており、エラーが出ているWin7において

もPOST処理自体は成功しており(データが更新されていた)、原因が

わからなくなってきております。

回避策等ありましたら、ご教授願えないかと思い、投稿させて頂きました。

また、以前support.microsoft.comで公開されていた

文書番号: 2409615

と状況が近いのかとも思いましたが、同文章は現在削除されています。

削除されていると言う事は、この文章に記載されている事柄は気にしなくても良いでしょうか。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-05-20T07:59:27+00:00

一か月以上嵌っていますが、ようやく少し進展しました。

Windows7(IIS7.5) ⇔Windows7(IIS入れているのとは別のPC)

だと動きます。

しかし、Server2008R2(IIS7.5)だとダメです。

WinHttp.WinHttpRequest.5のオプションでHTTP1.0を指定したらなぜか動きました。

(サーバー問わず)

しかしHTTP1.1がなぜダメなのか、まだ判明していません。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

6 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2011-04-13T08:00:14+00:00

    対応アドバイスありがとうございます。

    確認に少し時間が掛かりますので、今時点で確認できた

    内容についての結果をお送りします。

    ・Sendするデータをエラーが発生しなそうな・・

    エラーになるデータを送ってみましたが、結果は同じでした。

    ※WinXPではきちんとエラーになったが、Win7では相変わらず返答なし(80072F78)

    ・WinHTTPではなくXMLHTTPでテストする

    XMLHTTPではサーバーからの返答がありました。(代わりに、POSTしたはずのデータが登録・更新されていませんでしたが・・・)

    WinHTTPだけの問題のようですね。

    当然かもしれませんが、ServerXMLHTTPでは返答ありませんでした。

    ・リクエストをSnifferでキャプチャしてマクロのそれと比較する

    Snifferを知らなかったので、調べて使ってみます。

    なにか解りましたら、連絡いたします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2011-04-13T04:10:56+00:00

    こんにちは。

    エラーを再現できる環境に無いので的確な回答は出来ませんが、

    パッと思いつく対応としては、Sendするデータをエラーが発生しなそうな

    適当なものに変えてテストする、マクロではなくブラウザでPOSTしたときの

    リクエストをSnifferでキャプチャしてマクロのそれと比較する、

    WinHTTPではなくXMLHTTPでテストする、といったところでしょうか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2011-04-12T23:47:04+00:00

    きぬあさ殿

    返信ありがとうございます。

    すいません。コードを載せるべきでしたね。

    Sendメソッドの引数はVariant型ですが、エラーが出ています。

    ※最初にXP環境で組んだとき、Variant型にしていなくてうまくいかななったので

    該当部分のコードは以下の通りです。

    ' -----------------------------------------------

    ' WinHttpRequestでPost処理

    '

    '   uploadURL   String      転送先のアドレス

    '   bFormData   Byte()      転送するデータ

    '   Boundary    String      Boundary情報

    ' -----------------------------------------------

    Function WinHttpRequest( _

    ByVal uploadURL As String, _

    ByRef bFormData() As Byte, _

    ByVal Boundary As String, _

    ByVal cookie As String _

    ) As String

       On Error GoTo ErrHandlerEnd

        'WinHttpRequestオブジェクト作成

        Dim http As Object

        Set http = CreateObject("WinHttp.WinHttpRequest.5.1")

        If Err.Number <> 0 Then

            Err.Clear

            Set http = CreateObject("WinHttp.WinHttpRequest.5")

            If Err.Number <> 0 Then

                Err.Clear

                Set http = CreateObject("WinHttp.WinHttpRequest")

                If Err.Number <> 0 Then

                    WinHttpRequest = "動作環境はWindows 2000以上である必要があります" 'TODO

                    Exit Function

                End If

            End If

        End If

        ' Post処理

        Dim vData As Variant  ' String や Byte()だとうまくフォームデータが送信されない

        vData = bFormData

        http.Open "POST", uploadURL, False        ' False = 同期実行

        http.SetRequestHeader "Cookie", cookie    ' Excelシート経由で引き継がれたCookieをセット

        ' マルチパート

        http.SetRequestHeader "Content-Type", "multipart/form-data; boundary=" + Boundary

        http.Send vData                           ' 送信

        ' 結果確認

        If (http.Status >= 200 And http.Status < 300) Then

            WinHttpRequest = http.ResponseText

        Else

            MsgBox http.Status & ": " & http.StatusText

            WinHttpRequest = ""

        End If

        ' メモリ開放

        Set http = Nothing

        On Error GoTo 0

        Exit Function

    ErrHandlerEnd:

        MsgBox "Post処理で異常終了しました。"

        MsgBox Err.Number & ": " & Hex(Err.Number) & ": " & Err.Description

    End Function

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2011-04-12T14:00:31+00:00

    こんばんは。

    コードが分からないので何とも言えないのですが、Sendメソッドの引数をVariant型にしても

    エラーが起きますでしょうか?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません