問題タブ [webrequest]
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# - WebRequest は Web サイトと対話するための適切な C# ツールですか?
POSTおよびjson形式を使用してWebサイトとの間でデータを送受信する必要があるC#で小さなツールを作成しています。私はこれまで C# (または実際にはどの言語でも) でこのようなことをしたことがないので、始めるのに役立つ情報を見つけるのに苦労しています。
C# の WebRequest クラスに関する情報をいくつか見つけましたが (具体的にはhereから)、詳しく調べる前に、これが仕事に適したツールであるかどうか疑問に思いました。
データを json 形式に変換するためのツールはたくさんありますが、他にはあまりありません。
c# - サーバー側のWebリクエストに厳密なタイムアウトポリシーを適用する
RESTを使用して値を取得するには、サードパーティに呼び出す必要がありますが、10ミリ秒以内に応答がない場合は、デフォルト値を使用して処理を続行します。
私はこれに非同期WebRequestdoを使用することに傾倒していますが、同期要求を使用してそれを行うためのトリックがあるかどうか疑問に思いました。
何かアドバイス?
asp.net-mvc - ASP.NET MVC でフォーム、クエリ文字列、Cookie の値を優先的に返す
ユーザーリクエストから値を取得するときに、なぜクエリ文字列が好まれるのか疑問に思っています。どこ?1) System.Web.Mvc.DefaultModelBinder のコードは次のようになります (一部のみ):
2) このシグネチャを持つコントローラーにメソッドがある場合:
パラメータ (x, y) は、フォームからではなく、クエリ文字列からの値にバインドされます。Request.From からの値は、Request.QueryString からの値よりも優先されると思います。
編集: 2 番目のケースは最初のケース (DefaultModelBinder) が原因であることがわかりました。
背後にある動機は何ですか?
asp.net - localhost から localhost への WebRequest : なぜ拒否されるのですか?
私のアプリは、特定の時点で WebRequest を使用して、それ自体からページを取得します。
これは問題にはなりません。実際には、中程度の信頼を持つ「共有」ホスティング パッケージであるサーバー上で正常に動作します。ローカルでは、中程度の信頼に基づくカスタム セキュリティ ポリシーを使用します。これには、次のものが含まれます — デフォルトの中程度の信頼ポリシーからそのままコピーされます。
問題のある行は、カスタム XmlRelativeUrlResolver にあります。
要求されている URL は、リクエスターと同じアプリケーション内の localhost にあります。これがスタック トレースの先頭です。
誰もがここで問題を見ますか?
@Sijin: 提案ありがとうございます。リゾルバーに送られるURLはリクエストURLに基づいており、127.0.0.1でサイトにアクセスしても同じ結果になることをデバッガーで確認しました。
c# - C# アプリケーションから Web サイトが有効かどうかをテストする
Web サイトが C# アプリケーションから生きているかどうかをテストする最良の方法を探しています。
バックグラウンド
私のアプリケーションは、Winforms UI、バックエンドWCF サービス、およびコンテンツを UI や他の消費者に公開するためのWeb サイトで構成されています。WCF サービスが見つからないか、Web サイトがダウンしているために UI が起動しても正しく動作しないという状況を防ぐために、アプリの起動チェックを追加して、すべてが有効であることを確認しました。
アプリケーションは、C#、.NET 3.5、Visual Studio 2008 で作成されています。
現在のソリューション
現在、Web サイトをテストして結果を表示する Web サイトのテスト ページに Web 要求を行っています。
この呼び出し中に例外がスローされなければ、すべて問題なく UI を開始できると想定しています。
質問
これは最も簡単で正しい方法ですか、それとも C# で知らない他の卑劣な呼び出し、またはそれを行うためのより良い方法がありますか。
c# - System.Net.WebRequestを使用している場合、一部のHTTPヘッダーを設定できません
オブジェクトにHTTPヘッダーのキーと値のペアを追加しようとするとWebRequest
、次の例外が発生します。
このヘッダーは、適切なプロパティを使用して変更する必要があります
Add()メソッドを使用してコレクションに新しい値を追加しようとしましたHeaders
が、それでも同じ例外が発生します。
これを回避するには、WebRequestオブジェクトをHttpWebRequestにキャストし、などのプロパティを設定しますhttpWebReq.Referer ="http://stackoverflow.com"
が、これは、プロパティを介して公開される少数のヘッダーに対してのみ機能します。
リモートリソースのリクエストを使用してヘッダーを変更する際に、よりきめ細かい制御を行う方法があるかどうかを知りたいです。
.net - .net に https WebRequest を投稿できませんか?
こんにちは、Https で WebRequest を投稿しようとして問題が発生しています。
次のエラーを受け取りました
1.-基になる接続が閉じられました: リモート サーバーに接続できません。
2.-操作タイムアウト
3-基になる接続が閉じられました: SSL/TLS の安全なチャネルを確立できませんでした。
私は自分の会社と顧客の会社の約 3 つまたは 4 つの異なるプロキシで試しましたが、制限なしで ISP プロバイダーと直接接続している場合でも、次のメソッドを実行すると上記のエラーが発生します
これがプロキシの背後で発生するかどうかにかかわらず、リクエストはプロキシの背後にある 1 台の PC からのみ正常に投稿できます。プロキシにクライアント証明書がインストールされていません。
これは .net フレームワーク 1.1 の下にあり、要求には既にネットワーク資格情報が含まれています。
何ができますか?
アップデート
内部例外 3 番目のエラーは次のとおりです。関数は正常に完了しましたが、コンテキストを完了するために再度呼び出す必要があります。
iisper.h のドキュメントによると、このエラーは
MSDNでは、これは
SEC_I_CONTINUE_NEEDED クライアントは出力トークンをサーバーに送信し、返されるトークンを待つ必要があります。返されたトークンは、InitializeSecurityContext (Schannel) への別の呼び出しで渡されます。出力トークンは空にすることができます。
これは、PC にクライアント証明書がないということですか?
c# - C#: タイムアウト付きの URL のダウンロード
.NET でそれを行う最善の方法は何ですか? 私はいつも必要なものを忘れていますDispose()
(または でラップしusing
ます)。
編集: を長い間使用した後、WebRequest
カスタマイズについて知りましたWebClient
。ずっといい。
ssl - HttpWebRequestサーバーが利用できません503問題
私はもともとWebRequestとWebResponseを使用してHttpPostメッセージを送信していました。いつも「OK」と返事が来ました。私が投稿するメッセージは、xml内の証明書で署名されたXMLです。
構成は次のとおりです。httpsWebサイトに送信しているC#サービス。私が言うことができない別の場所のHTTPSウェブサイト。ローカルに投稿したメッセージを受信し、結果をファイルに書き込んでいるローカルのHTTPSローカルWebサイト。他のウェブサイトが取得しているものをシミュレートするためだけに。
ローカルWebサイトは、自己署名証明書で署名されており、2048年に有効期限が切れます。
このコードは今週まで正常に機能していました。私はいつも投稿してOKを得ました。両方のウェブサイトで。しかし今週は、テストと実際のプロジェクトの実装の両方がKaputになります。両方のウェブサイト。
ローカルWebサイトでは、SSLに接続できないと表示されていました。この問題は、自己署名証明書が原因で発生します。この証明書は、私の理解を超えた何らかの理由で、地獄を与えることになります。ここでの質問のおかげで、証明書が常に真であることが検証され、バグが発生しなくなりました。
これを修正するには、次のように記述します。
アプリケーションの開始時。1回だけ実行されるようにします。
残りの問題は、「リモートサーバーがエラーを返しました:(503)サーバーが利用できません。」です。ブラウザにURLを入力すると、問題なく動作します。コードでは、このWebサイトは何も受信しておらず、Web応答に移動すると、上記のエラーが発生します。
「Testing123」のみを送信するテストアプリケーションを実行しましたが、エラーが発生し続けます。ハーバードのhttpsWebサイトにも送信しましたが、エラーはありませんでした。
これは私がインターネットで見つけたものから構築した別の例です:
アップデート
エラーは、私がhttpwebrequestで呼び出していたものが、私が提供していないいくつかのhttpheadersを必要としていたことでした。以前に起こったのは、「OK」という応答があったことだけでした。彼らは彼らのコードを修正しました、そして私は私のものを修正しました、そして今それは機能しています。
他の誰かにそれが起こった場合は、以下のようなプロキシ設定を確認し、反対側が例外を与えているか、何も返さないかどうかも確認してください。