問題タブ [webresponse]
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.
xml - WebRequestからのWebResponseのモック
私はついにRESTfulWebインターフェースで動作するいくつかのアプリの作成をいじり始めましたが、一連のテストを実行するためにF5を押すたびにサーバーを叩いているのではないかと心配しています。
基本的に、一連のWeb応答を取得する必要があります。これにより、サーバーに毎回ヒットするのではなく、さまざまな応答を正しく解析していることをテストできます。これを1回実行し、XMLを保存してから、ローカルで作業できると思いました。
ただし、(AFAIK)WebRequest.GetResponseによってのみインスタンス化できるため、WebResponseを「モック」する方法がわかりません。
どうやってこの種のことをあざけるのですか?あなたは?私は彼らのサーバーを槌で打っているという事実が本当に好きではありません:SIはコードをあまり変更したくないのですが、これを行うためのエレガントな方法があると思います。
承認後の更新
ウィルの答えは私が必要とした顔の平手打ちでした、私は私が基本的なポイントを逃していることを知っていました!
- XMLを表すプロキシオブジェクトを返すインターフェイスを作成します。
- インターフェイスを2回実装します。1つはWebRequestを使用し、もう1つは静的な「応答」を返します。
- 次に、インターフェースの実装は、応答に基づいて戻りタイプをインスタンス化するか、静的XMLをインスタンス化します。
- その後、テスト時または本番環境で必要なクラスをサービスレイヤーに渡すことができます。
コードをノックアップしたら、いくつかのサンプルを貼り付けます。
c# - リモート サーバーがエラーを返しました: (422)
を使用して WebResponse を取得しようとすると、次のエラーが発生します。
リモート サーバーがエラーを返しました: (422)。
誰かがこの例外について考えていますか?
c# - 開いている HTTP ストリームからのデータの読み取り
.NET WebRequest/WebResponse クラスを使用して Twitter ストリーミング API here にアクセスしようとしています"http://stream.twitter.com/spritzer.json"
。
接続を開き、開いている接続からデータを段階的に読み取ることができる必要があります。
現在、メソッドを呼び出すとWebRequest.GetResponse
、応答全体がダウンロードされるまでブロックされます。メソッドがあることは知っていますがBeginGetResponse
、これはバックグラウンド スレッドで同じことを行うだけです。ダウンロードがまだ行われている間に、応答ストリームにアクセスする必要があります。これは、これらのクラスでは不可能に思えます。
Twitterのドキュメントには、これに関する特定のコメントがあります。
「一部の HTTP クライアント ライブラリは、接続がサーバーによって閉じられた後にのみ応答本文を返すことに注意してください。これらのクライアントは、ストリーミング API へのアクセスには機能しません。応答データを段階的に返す HTTP クライアントを使用する必要があります。最も堅牢な HTTPクライアント ライブラリはこの機能を提供します。たとえば、Apache HttpClient はこのユース ケースを処理します。」
彼らは Appache HttpClient を指していますが、.NET を使用する必要があるため、あまり役に立ちません。
WebRequest/WebResponse
でこれが可能かどうか、または低レベルのネットワーキングクラスに行く必要があるかどうかについてのアイデアはありますか? たぶん、これを可能にする他のライブラリがありますか?
Thxアレン
c# - WebRequest.GetResponseがロックしますか?
以下を書くとき、私のコードはGetResponseにロックされます。なんで?
vb.net - IIS/キャッシュの問題?
webrequest と webresponse を使用して、3 秒ごとにファイルが存在するかどうかを確認するプログラムがあります。そのファイルが存在する場合、そうでない場合でも何かを行います。その部分は正常に機能します。ページに入力されたメッセージやその他の変数を含むファイルを作成してプログラムを制御し、それを作成してプログラムがチェックしているフォルダーに送信する Web ページがあります。そのファイルを削除する「停止」ボタンもあります。
これは、1 つのメッセージが起動されてから削除された後、別のメッセージで 2 回目に起動されたときに、プログラムがまだ古いメッセージを表示することを除けば、うまく機能します。IISでファイルが削除されるのを見ているので、それは問題ではありません。
キャッシングを防ぐためにメタタグについて考えましたが、ファイルに動的に名前を付けることでこの問題も解決しますか? ファイル名の最初の部分しかわからないファイルをプログラムがチェックできるようにするにはどうすればよいですか? ローカル マシンのディレクトリをチェックするための解決策を見つけましたが、ここでは機能しません。
どんなアイデアでも歓迎します、ありがとう。
c# - 読み取りタイムアウト後の ResponseStream 再読み取り
応答ストリームを読み取ったときにタイムアウトが発生した場合、読み取りを再試行できますか? または、新たにリクエストする必要がありますか?ダウンロード元のサーバーは再開をサポートしていないため、タイムアウトから保護する必要があります。
c# - Twitterのfirehoseストリームを読んでいるときにWebResponseが終了しないのはなぜですか?
次の関数は、Twitterのfirehoseから最初のXメッセージを取得しますが、WebResponseブロックのように見え、関数を終了することはありません。
ただし、以下は正常に機能します。
私は何が間違っているのですか?
c# - WebResponse インスタンスを適切に破棄するには?
通常、WebRequest を使用してデータをダウンロードするには、次のようなコードを記述します。
WebException がスローされた場合、WebException には WebResponse オブジェクトへの参照があり、Dispose が呼び出される場合と呼び出されない場合があります (例外が発生した場所、または応答クラスの実装方法によって異なります) - わかりません。
私の質問は、これにどのように対処するべきかということです。非常に防御的にコーディングし、WebException オブジェクトで応答を破棄することになっています (WebException は IDisposable ではないため、これは少し奇妙です)。または、これを無視して、破棄されたオブジェクトにアクセスする可能性があるか、IDisposable オブジェクトを決して破棄しないことになっていますか? WebException.Response の MSDN ドキュメントに示されている例は、まったく不十分です。
c# - WebResponse C#に応答するサーバーのIPアドレスを取得する方法
C#でWebRequestに応答したIPアドレス(ホスト名ではない)を見つけようとしています。DNS解決を行いたくないのは、返されるDNSレコードが、要求に応答するサーバーではない場合だからです。例:
クライアント->ロードバランサー->Webサーバー
DNSサーバーは、ロードバランサーのIPで応答します。応答するWebサーバーがロードバランサーを経由しないと仮定すると、IPアドレスは、私が見つけようとしている実際のWebサーバーになります。
c# - ボタンのクリックをプログラムでシミュレートする方法
こんにちは、ユーザーが .net を使用してメーリング リストのグループに登録または登録解除できるアプリケーションを開発しています。以下のように webclient クラスを使用しています。
応答にはもう1つのボタン(購読解除)が含まれています。私がしなければならないことは、.netアプリケーションからプログラムで(購読解除)ボタンのクリックをシミュレートすることです.これを行う方法はありますか?
ありがとうございます