問題タブ [winhttp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
winapi - 同期WinHttpリクエストをキャンセルするにはどうすればよいですか?
WinHttpSendRequest
私のサービスには、誰かが私のサービスを停止しようとしたときに実行される可能性のあるスレッドがあります。
WinHttpCloseHandleのドキュメントには次のように書かれています。
HINTERNET
アプリケーションは、を使用してリクエストハンドルを閉じることにより、進行中の同期または非同期リクエストを終了できます。WinHttpCloseHandle
しかし、後で同じドキュメントがこれと矛盾するようです。それは言う:
アプリケーションは
WinHttpCloseHandle
、同期要求を呼び出さないでください。これにより、競合状態が発生する可能性があります。
電話できないことに同意しているように見えるこのブログ投稿を見つけましWinHttpCloseHandle
た。
サービスを正常に停止できるように、この操作をキャンセルするにはどうすればよいですか?WinHttpSendRequest
時間がかかりすぎてサービスがすぐに停止しないため、自然にタイムアウトするのを本当に待つことはできません。Windowsはこれをエラーとして報告し、シャットダウン時にサービスを強制的に強制終了すると思います。
アイデアをいただければ幸いです。
c++ - WinHTTP がヌル バイトをダウンロードしていますか、それとも結果バッファーを間違ってコピーしていますか?
私は最近、完全に機能する WinInet プログラムを WinHTTP に移植しました。以下は、GET リクエスト全体を 1 行のコードにラップするために作成した関数です。
このコードは、要求された URL をダウンロードするという点で機能します。この問題は、サーバーが Content-Length ヘッダーを返さない場合に発生します (ほとんどの場合)。コードは引き続きすべてのデータをダウンロードしますが、文字列に変換すると null バイトが埋め込まれます。
上記のコードは次のように呼び出されます。
StdString は typedef std::basic_string<TCHAR> で、StdOut は UNICODE が定義されているかどうかに応じて cout または wcout を使用するマクロです。
ヌルが埋め込まれているため、すべての応答がコンソールに表示されるわけではありません。デバッグをオフにしてコードを実行したときに表示される出力は、ここで表示できます(改行は、コンソールでテキストが折り返されている場所であることに注意してください)。最初の null は、最後の "__in" の直後に表示され、"Press any key to continue. . ." 出力が表示される場所で発生します。出力のスクリーン キャップは次のとおりです。
html 変数の値のテキスト ビジュアライザーのスクリーン キャップを次に示します。これは、表示可能なものに対して null が表示される場所を正確に示しています。
どこかで悪いコピーをしているのですか、それとも私が気付いていない WinHTTP のニュアンスがありますか?
c++ - WinHTTP非同期コールバック
私はC++があまり得意ではありません。コードフラグメントにもっと良いものがあれば、教えてください。
私はwinhttpを非同期的に実装しています。しかし、応答を取得するのに問題があります。私はそれを理解することはできません。応答全体を一度に解析できるはずだからです。複数の同時要求が発生する可能性があるため、応答(headers + body)をグローバル変数にバッファリングすることはできません。
http getリクエストの応答を取得するにはどうすればよいですか?または、新しいスレッドでwinhttp同期を実行することをお勧めします(したがって、メインループはブロックされず、完了時に関数を呼び出しますか?):
そして、メインの呼び出し:
visual-c++ - Visual Studio 2003、XP 2003、SP3 で WinHTTP を使用するには、正確にどの SDK をインストールすればよいですか?
私の OS は XP 2003、SP 3 です。Visual Studio 2003 には、MS VC++ コード (.NET ではない) があります。(これは、Visual Studio の新しいバージョンにアップグレードする時期ではありません。) winhttp.h) 私のコードで。どの SDK を正確にインストールする必要がありますか? バージョンは?どこで入手できますか?
次の Web サイトに示されているものはすべて新しすぎて、私の環境では動作しません。
http://msdn.microsoft.com/en-us/windows/bb980924.aspx
「間違った」インストールによって環境が台無しになり、回復に時間がかかるのではないかと心配しています。
ありがとう
c++ - C++ for Windows を使用してソケット WinHttp API の終了を高速化する方法
Windows ソケット経由で HTTP 接続を確立する C++/MFC で記述された Windows サービス アプリケーションがあります。WinHttp * APIを使用して、すべてのソケット関連操作を実行します。ソケットを介して接続中の場合に誰かがそのサービスを停止/アンインストールしようとする場合を除いて、すべてうまく機能します(特に、インターネットケーブルが抜かれている場合など、そのような接続を確立できなかった場合)ソケット API は、サービスが閉じる前に数秒間戻りません (明らかに、サービス内のメカニズムは、ソケット スレッドが「正常に」終了するのを待ちます)。
私の質問は、WinHttpOpen()、WinHttpConnect()、および WinHttpOpenRequest() への呼び出しから取得された (HINTERNET タイプの) 接続および要求ハンドルと同様に、開いているソケット ハンドルがある場合、他のものを強制的に作成する方法はありますか?現在ソケットで動作している可能性のある WinHttp* API はすぐに戻りますか?
PS。ソケットスレッドが閉じるのを待つ前に(サービスをアンインストール/停止する前に)、メインスレッドからそうすることを考えていました。
excel - WinHTTP と Excel でプロキシを構成する
WinHTTP を使用して、Excel VBA マクロで GET 要求を実行しています。ただし、プロキシを使用してネットワーク内のマシンからリクエストを実行しようとすると、機能しません。手動で構成すると機能しますが、私が開発しているツールを使用する人はプロキシ サーバーを知っているとは思いません。
プロキシ サーバーを自動構成する方法、または Windows からプロキシ構成を取得する方法はありますか? サンプルコードは次のとおりです。
この場合、ユーザーに「proxyserver:8080」アドレスを強制的に見つけさせたくありません。必要なのは、それを自動的に入力する方法です。
どうもありがとう。
c - WinHTTP の複数の非同期要求
Web サイトの約 6000 ページからデータを取得する必要があります。いくつかの調査を行った後、WinHTTP を試してみることにしました。これを機能させることができましたが、同期的に行っていたため、完了するまでに時間がかかりました。現在、WinHTTP を非同期で使用しようとしていますが、障害にぶつかっています。多くのチュートリアルと例を探しましたが、MSDN のドキュメントしか見つかりませんでした。前述のように、多くのリソースを見つけることができなかったので、先に進んで試してみました。
以下は私のコールバック関数です:
注: 私の質問/問題に関連する部分であるため、コードのこのセクションのみを提供しました。変数宣言が抜けていたらすみません。
上記のコードは私にとっては機能し、実際に探している情報を取得しますが、単一のページに対してのみです。ここまで来て、このメソッドで複数のリクエストを行う場合、何をすべきか分からないことに気付きました。繰り返しになりますが、検索しても MSDN の記事以外はあまり見つかりませんでした。MSDN の記事は、私が知る限り、一度に複数の要求を行う例ではありません。さらに、open/send/etc に使用している while ループ。theRequest の値に基づくリクエストは、これを行うにはひどい方法のようです。コードを改善するための他のアドバイスもいただければ幸いです。
一般的に、ここに私の問題の要約があります: WinHTTP を非同期で使用して約 6000 の GET 要求を行う必要があります。私は WinHTTP を初めて使用するため、これを行う方法が完全にはわかりません。そのため、複数の非同期要求を処理するための最も基本的な (またはおそらく効率的な) 方法を探しています。
c++ - mfc/atl なしでフォームを投稿し、ファイルをアップロードするための c++ winhttp/wininet ラッパー
誰かが mfc/atl を必要としない winhttp/wininet ベースの C++ ラッパーを教えてくれませんか? MSVC Expressで動作するようにするためです。
GET、POST を使用して、HTML フォームからファイルをアップロードできるようにしたいと考えています。
codeproject.com でいくつかチェックしましたが、適切なラッパーを見つけるのに苦労しました。
私を助けることができる何かがありますか?
winhttp - WinHttpCrackurlはどのように機能しますか
WinHttpCrackurlに関するMSDNのドキュメントでは、「同期して」実行されると述べています。しかし、誰かがWinHttpCrackurlがネットワーク接続を試行するかしないかを示す信頼できるドキュメントを提供できますか?無駄に検索してしまいましたが、関数の逆アセンブルは避けたいと思います。ありがとう。