問題タブ [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.

0 投票する
1 に答える
2409 参照

php - WinHttp POST 本文が受信されない

POST データを含む WinHttp 要求を IIS7 サーバー上の php スクリプトに送信していますが、サーバーが POST 本文を受信して​​いません。GET を使用して WinHttp 経由で送信するか、NULL 本文で POST を送信するか、本文で POST を使用して HTML フォームを介して送信すると、すべてが期待どおりに機能します。

本体を使用する場合と使用しない場合の WinHttp POST 呼び出しによる違いを示す簡単なコードを次に示します。

本体なし:

本体付き:

したがって、唯一の違いは、本文パラメーターと content-type ヘッダーです。非常に奇妙なことに、これは 20 回に 1 回は機能する可能性がありますが、通常は本文がサーバーによって受信されず、タイムアウトになります。ここで何か明らかに間違っていますか?

0 投票する
1 に答える
590 参照

c++ - プロキシのユーザー名とパスワードを取得するための標準の Windows ダイアログはありますか?

WinHTTPインターネットにアクセスする必要があり、プロキシの背後にある可能性のあるアプリを作成するために使用しています。ユーザーがドメインにいる場合、すべてが(ほとんど)箱から出してすぐに機能しますが、そうでない場合は、資格情報を要求する方法が必要です。それを行う標準的な方法はありますか、それとも独自のダイアログを作成する必要がありますか?

理想的には、IE のユーザー名とパスワードのダイアログを模倣したものが欲しいです。

ありがとう。

0 投票する
1 に答える
7101 参照

vba - VBA を使用して HTTP ポスト経由で zip ファイルをアップロードするにはどうすればよいですか?

この質問は、他の人から何らかの形で何度も尋ねられましたが、ほとんどが未回答のままであるか、与えられた回答は「C#を使用してください!」であり、これは偶然にも回答ではありません。;-)

VBA 経由で zip ファイルを Web サーバーにアップロードしたいと考えています。サーバー側のコードは既に存在し、うまく機能します。手動のフォーム アップロードで zip ファイルを受け取り、zip ファイルの内容を処理します。

理論的には、zip ファイルのバイナリ コンテンツを HTTP 要求文字列に変換し、WinHTTP ライブラリのいくつかのメソッドを使用してサーバーに送信する予定です。すべてがうまくいけば、サーバー サイド スクリプト (Perl) は、ファイルが VBA からのものかブラウザからのものかを判断できず、正常に動作し続けます。

ただし、zip ファイルを HTTP 要求文字列に変換することは、それほど簡単ではないようです。

オンラインで検索すると、3 つの一般的な戦略が存在することが示されているようです。

方法 1: WinHTTP および HTTP 要求文字列へのバイナリの手動エンコード

  • ファイルをバイナリ モードで開き、エンコーディング ブードゥーを手動で適用して、バイナリ ストリームを HTTP 要求文字列に変更し、WinHTTP を使用して途中で送信する必要があります。恐ろしい量のコード。

方法 2: WinHTTP

  • ADODB.Stream の使用を伴います。10 行未満のコード。

方法 3: SendKeys を介して IE を自動化する

  • このハックを説明する単語は 1 つだけです。そしておそらく、IE の将来のバージョンで壊れるでしょう。10 行未満のコード。セキュリティリスク。

私はMethod 2に傾倒していますが、ドキュメントは薄く、コード例はまれであり、それが機能するという確信はありません。ほとんどのコード例は不完全であり、多くの場合、機能しないというコメントが含まれています。この方法は実際に機能しますか?

方法 1は次の行です。

方法 3お願いします。(それに関しては、むしろC#を使用してください。C#が大好きです。要件だけでVBAしか許可されていません)

このタスクを達成する方法の良い例はありますか?

0 投票する
1 に答える
364 参照

php - Continue WinHTTP connection after write shutdown

I'm using WinHTTP to send data to a web server script and in some cases I need the server to kill the incoming data (as it is not required) but still return a response to the client app. I'm using stream_socket_shutdown(STREAM_SHUT_RD) from the server end to end the incoming data, then sending a response back as normal. The problem lies with WinHTTP, I get a negative response back from WinHttpWriteData() as expected and stop sending data but when I call WinHttpReceiveResponse() it returns false and GetLastError() returns ERROR_WINHTTP_CONNECTION_ERROR.

Is there a way to perhaps reset the internal error condition for WinHTTP? Or another way to receive the response after the connection has been broken by the server?

Thanks, J

0 投票する
1 に答える
3014 参照

c++ - WinHTTP エラー 無効な URL

パスを使用して URL を指定する方法は次のとおりhttp://stackoverflow.com/questionsです。

以下は機能しますが、上記の例で指定された URL では機能しません。

0 投票する
2 に答える
2634 参照

http - Kerberos (Windows 統合) 認証に WinHTTP ライブラリを使用する方法

SPNEGOも処理し、kerberosのみを理解するがNTLMを理解しない、kerberosを理解するLinuxボックスで実行されているサーバーがあります

Firefox と IE は、パスワードの再入力を求められることなく、Kerberos トークンを使用して正常にログインし、Web ページにアクセスします。

現在、WinHTTP ライブラリを使用してアプリケーションを作成しようとしています。ここの例に従いました http://msdn.microsoft.com/en-Us/library/aa383144(v=vs.85).aspx

WinHttpSetCredentials 呼び出しでは、ユーザー名のパスワードを設定したくありません。代わりに、この呼び出しに既存の資格情報を使用するように指示します。それ、どうやったら出来るの?

ユーザー名とパスワードを空白にすると機能せず、NTLM にフォールバックして失敗します。

では、WinHTTPSetCredentials の使用方法を教えてもらえますか?

0 投票する
3 に答える
10346 参照

c++ - Posting form using WinHttp

Do i need to add any headers before making a post to server?

For example, Currently I'm trying to send a request along with the post data this way,

#xA;

should this work?

0 投票する
1 に答える
6163 参照

winhttp - SSL ステータス コードの WINHTTP_STATUS_CALLBACK 関数の使用法を明確化


C でいくつかの WinHttp コードを書いています。SSL 経由でリクエストを送信しています。SSL エラーを処理するために、dwNotificationFlags を WINHTTP_CALLBACK_STATUS_SECURE_FAILURE に設定して WinHttpSetStatusCallbackを呼び出して、WINHTTP_STATUS_CALLBACK 関数を登録しています。

WINHTTP_STATUS_CALLBACK のドキュメントによると、コールバックがdwInternetStatus= WINHTTP_CALLBACK_STATUS_SECURE_FAILURE で呼び出されると、それは

サーバーから SSL (Secure Sockets Layer) 証明書を取得中に、1 つ以上のエラーが発生しました。lpvStatusInformation パラメータにはフラグが含まれています。詳細については、lpvStatusInformation の説明を参照してください。

現在、lpvStatusInformationパラメーターは LPVOID として入力されています。しかし、ドキュメントのそのステートメントから、WINHTTP_CALLBACK_STATUS_SECURE_FAILURE の場合はポインターとして扱われないことが分かります。

のドキュメントは次のようにlpvStatusInformation述べています。

dwInternetStatus パラメータが WINHTTP_CALLBACK_STATUS_SECURE_FAILURE の場合、このパラメータは次のいずれかの値になります。

...そして、これらの値は 16 進値の 1 つです: 1、2、4、8、10、20、40。(WinHttp.h を参照)

これは私にはかなり明確に思えます。値を取得するためにポインターを逆参照するべきではありません。これ lpvStatusInformationは、ポインターではなく、16 進値を保持します。

これを正しく解釈していますか?


私はそのようにコードを書きましたが、過去には機能していました。おもう!しかし今、私はlpvStatusInformation0x0104f288 を取得しています。これは、これらの 16 進値とはまったく異なります。また、可能な値を OR してその値を作成することもできません (ドキュメントには、同じ DWORD 内の複数のステータス項目については何も記載されていません)。それは確かに私へのポインターのように見えます。そして、ポインターを逆参照すると、 に対応する 0x8 が得られますがWINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA、これは少なくとも意味があります。


問題は、そのポインターを逆参照する必要があるかどうかです。

コールバック コードは次のとおりです。

0 投票する
2 に答える
4173 参照

c++ - WinHttpSendRequest を使用した投稿

WinHttpSendRequest を使用して投稿するフォームを作成するにはどうすればよいですか?

例:私が知っていれば

関数を使用して送信するにはどうすればよいですか?

0 投票する
1 に答える
941 参照

c++ - HttpAddUrl が ERROR_SHARING_VIOLATION (32L) で失敗する

価格リスナーを作成しようとしています。

データは「プッシュ」応答として到着します。つまり、チャンク転送エンコードです。しばらくデータがない場合、非同期wininetとwinHTTP読み取りデータAPIの両方が接続を閉じるため、httpサーバーAPIを使用することにしました。

まず、http サーバー API を使用するのは正しいですか?

2番目に、msdnの例に従って、しようとすると:

私はいつも共有違反を受けます。どういうわけか接続を構成するために netsh を使用する必要がありますか? もしそうならどのように?http.sys の構成について言及されているのを見たことがあります。また、管理者として上記のコードを実行してみました。

このためのコードはほとんどないように思われるので、私はいくつかの助けに非常に感謝しています!

どうもありがとう、ジョン