問題タブ [dotnet-httpclient]

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 投票する
3 に答える
10192 参照

c# - HttpRequestExceptionからJSONエラーメッセージを取得する方法

ステートメントでResponse(HttpResponseMessage)を抽出する必要があるのに、( catchでcatch使用して)実行できないと思われる状況があります。awaitまた、キャッチ後に行うと、HttpResponseMessageメッセージは「破棄」になります。コード:

ここで何ができるでしょうか?


を使用して以前のアプローチを更新HttpWebRequestします:

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

dotnet-httpclient - Windows8Httpclientの基本的な認証

このフォーラムは初めてです。

WindowsアプリにHttclientを使用して基本認証を実行しようとしています。

2つの質問があります:

ヘッダーコンテンツタイプとユーザーエージェントを追加する必要があります。それらを追加する方法がわからない。誰かが私を助けてくれませんか。

応答として、null値を取得しています。なぜですか?

よろしく、

TM

0 投票する
6 に答える
207754 参照

c# - 同期接続に HttpClient を使用する理由

API と対話するクラス ライブラリを構築しています。API を呼び出して、XML 応答を処理する必要があります。非同期接続にを使用する利点はわかりますHttpClientが、私が行っていることは純粋に同期であるため、HttpWebRequest.

誰かが光を当てることができれば、私はそれを大いに感謝します. 私はそれのために新しいテクノロジーを使用する人ではありません。

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

c# - C# HttpClient.SendAsync HttpMethod.Get - 追加の値で Cookie を更新する方法

C# HttpClient クラスを使用して、Cookie を使用して Http Get メッセージを送信しようとしています。 HttpClient.GetAsyncURLを受け入れるだけです。なので、その方法は使えません。そのHttpClient.SendAsyncメソッドを使用すると、次の方法で Cookie を送信できることがわかりました。

しかし、実行すると、それは言って失敗します -

「この動詞タイプのコンテンツ本文を送信できません」

Get メッセージは、データの投稿ではなく取得に理想的であることを知っています。しかし、私の状況では、クライアントの設定を保存するためにCookieがクライアントに保存され、Http Getメッセージを介して(HttpClientクラスを介して)それらをクライアントに送信する必要があります。

HttpClient オブジェクトを再初期化したくありません。これにより、SessionID が変更されます。Get メッセージにコンテンツを追加したくありません。Get message cookie を追加の値で更新する他の方法があるかどうかを尋ねているだけです。

この問題の対処方法を教えてください。事前にご協力いただきありがとうございます。

0 投票する
0 に答える
1194 参照

c# - HttpClient - HTTP メッセージ ヘッダー Cookie を追加の値で更新する方法

HttpClient送受信するには WebAPI クラスを使用する必要がHttpRequestMessageありHttpResponseMessageます。

クラスの同じインスタンスを介して複数のリクエストを追跡していますHttpClient(つまり、特定のセッション ID に対する複数のリクエスト)。最初の Get 要求は SessionID を作成します。sessionID 、HttpResponseMessageCookie ヘッダーなどの要素があります。

2 番目の要求では、最初の要求メッセージのヘッダーで返された Cookie にデータを追加する必要があります。HttpClientクラスは GetGetAsync(URL)との 2 つのメソッドのみを提供しますSendAsync(HttpRequestMessage)

HttpClientクラスは GET メッセージ用に 2 つのメソッドしか提供GetAsyncしていません。これは URI しか受け取らないため、役に立たないようです。SendAsyncここでは、クラス オブジェクトを再初期HttpRequestMessage化しないと使用できません。HttpClientHandlerHttpClient

Cookie ヘッダーを更新し、Get 要求メッセージに追加情報を追加するにはどうすればよいですか?

次のサンプルを確認してください Fiddler でキャプチャされたメッセージを取得する

1 つのサンプルをリクエストする

リクエスト 2 サンプル


HttpClient オブジェクト「クライアント」の既存のコピーを使用しています。HttpMessageHandler で再初期化できません。これを行うと、望ましくない新しい SessionID が作成されます。後続の Get/Post リクエスト間を追跡するために SessionID を使用しています。また、ブラウザと同じように Web リクエストをシミュレートする C# コンソール アプリです。他にご不明な点がありましたらお知らせください。関連するコメントをお寄せいただきありがとうございます。

アプローチ #1 HttpRequestMessage GETRequest = new HttpRequestMessage(HttpMethod.Get, completeUrl); string additionalCookVal = "viewall=1&grades=&materialType=&itemSearchControl0=itm_att_Item FORMAT,SIM&itemSearchControl1=itm_att_Learning Modalities&itemSearchControl2=itm_att_Flesch-Kincaid Grade Level Readability&text="; GETRequest.Headers.Add("Cookie1", additionalCookVal); //これは黙って無視されます HttpResponseMessage GETResponse = client.SendAsync(GETRequest).Result;

アプローチ # 2 var content = new FormUrlEncodedContent(additionalCookVals); //additionalCookVals は Dictionary オブジェクトです HttpRequestMessage GETRequest = new HttpRequestMessage(HttpMethod.Get, completeUrl); GETRequest.Content = コンテンツ; HttpResponseMessage GETResponse = client.SendAsync(GETRequest).Result; // Get メッセージにコンテンツを追加できないと言って失敗します。

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

c# - WinRT からリモート サーバーに接続できない

私は、基本的にXMLの一部をサーバーに送信して返すだけのアプリケーションを作成しています。しかし、これを機能させるのに問題があり、非常に奇妙なエラーが発生します

投稿先のサーバーは localhost ではありませんが、ローカル ネットワーク上のコンピューターです。このエラーが深くネストされています:

アプリケーションにインターネット クライアント機能があります。他のストア アプリケーションからローカル ネットワークとインターネットにアクセスできます。Firefox でリソースにアクセスすると、適切な動作が得られます。ファイアウォールを有効にしておらず、これらのポートをブロックするアンチウイルスも使用していません

このあいまいなエラーの原因は何ですか? どうすれば修正できますか?

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

c# - HttpClient PostAsync から Blogger API へ

次の API を使用して、Google Blogger と対話できるようにしています。ユーザーのブログに投稿を挿入する必要があります。ただし、PostAsync 機能に問題があります。API キーを持っているにもかかわらず、リクエストが承認されていないという 401 を受け取りましたが、OAuth トークンを適切に挿入していない可能性があります。

私は次のコードを持っています、

これは、認証ヘッダーを設定するコードです (キーは偽物ですが、OAuth トークンと思われるものと同じ形式であることに注意してください)。

そして、これは私の PostAsync 関数です

誰が私が間違っているのか教えてもらえますか? 乾杯。

[更新]

認証に文字列ベアラーを含める必要があるかどうかはわかりません。

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

c# - C# (.NET 4.5) で HttpClient.GetAsync(URI) のコールバックを作成するにはどうすればよいですか?

Google 検索への単純な非同期リクエストを作成したいと思います。

Google によると、これを行う最も簡単な方法は、単純な curl リクエストで JSON API を使用することです。

結果の最初の 5 ページを取得し、各結果の URL を配列に追加したいと思います。HttpClient.GetAsync に関する十分に説明されたチュートリアルを見つけるのは信じられないほど難しいと思います。私はこれ以上のものを持っていません:

これでタスクが開始されるはずなので、メインスレッドをブロックしませんが、リクエストが完了したときのコールバックメソッドを登録するにはどうすればよいですか?

0 投票する
0 に答える
2491 参照

asp.net-mvc - Cuong のソリューションを使用した ASP.NET WebAPI を使用した HMAC

今日は、今後の WebAPI プロジェクトに向けて、C# でのさまざまな HMAC 実装を調べることに時間を費やしました。ゼロから作成するか、必要に応じて変更する前に、すべてが機能することを確認し、理解を深めるために、既存のコードから始めたいと思いました。

こことウェブの両方に、素晴らしい記事や投稿がたくさんあります。しかし、私はいくつかの指針が必要であり、いくつかの洞察を大いに感謝するところまで来ました.

Cuong の投稿 ( ASP.NET Web API をセキュリティで保護する方法) から始めました。

json と formencoded データの両方をサポートしたかったので、拡張する必要があることはわかっていました。テスト クライアントも HttpClient を使用して C# で記述されており、空の WebAPI プロジェクトを作成し、ValuesController を使用しています。

以下は私の観察と質問です。

  1. POSTing: Cuong のコードを機能させる (正常に検証する) には、POST で URL にパラメーターを含める必要がありますが、値をコントローラーに取得するには、それらを本体に含める必要があります。これは、このタイプの認証では正常ですか? この特定の例では、ハッシュしているメッセージは http://:10300/api/values?param1=value1¶m2=value2 です。これで、クエリ文字列を手動で解析して取得できますが、バインディングを通じてコン​​トローラーに値を取得するには、次のことも行う必要があります。

    /li>

それ以外の場合、ValuesController のポスト アクションでは、パラメーターは常に null です。

  1. ノンスを含めるようにコードを拡張することを計画しています。ノンス、タイムスタンプ、および動詞の組み合わせで、安全なハッシュに十分でしょうか? メッセージもハッシュする必要は本当にありますか?

  2. json とフォーム エンコードされたデータをサポートするようにコードを拡張しようとしましたが (非常に失敗しました)、明らかな何かが欠けているに違いありません。

  3. Cuong は、署名とタイムスタンプをクエリ文字列に入れる代わりに、Authentication ヘッダーと Timestamp ヘッダーを使用しています。ある方法に他の方法よりも利点はありますか? 私が読んだ記事の大部分では、クエリ文字列自体にそれらが含まれています。

コードは見栄えがよく、ここで私の要素から少し外れています。ニュアンスを理解するためにゼロから書いた方が安全かもしれません(正気ですか?)。そうは言っても、私が見ているものに誰かが洞察を与えることができれば、それは素晴らしいことです.

結局のところ、WebAPI フレームワークの組み込みの承認メカニズムを使用して、メソッド/コントローラーを単純に属性付けし、エンコードされたフォームと json データを受け入れ、複雑な型の合理的なモデル バインドを行えるようにしたいと考えています。

* アップデート *

今日はさらに作業を行いました。以下は、nUnit PostTest のコードです。本文とクエリ文字列の両方に値を含めずに値を取得する方法を見つけました(以下のコード)。

また、そのモデル バインディング部分も把握しました。ここにすばらしい記事があります: http://www.west-wind.com/weblog/posts/2012/Mar/21/ASPNET-Web-API-and-Simple-Value-Parameters-from-POSTed-dataについて説明していますPOST がどのように機能するかを説明し、自分で設計したモデルと FormDataCollection オブジェクトの両方で動作させることができました。

今、jsonでエンコードされたメッセージを追加する価値があるかどうか、または FormUrlEncoding で標準化することが道であるかどうか疑問に思っています。また、クライアントの通知で十分ですか、それともサーバー側の通知を実装する必要がありますか? サーバー側の通知は、サービスへのすべての呼び出しを 2 倍にしますか (最初の呼び出しは 401 をスローし、2 番目の呼び出しは通知と共にペイロードを含みますか?

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

asp.net-mvc - (System.Net.Http)HttpClient Http動詞を拡張するには?

System.Net.Http HttpClient に新しい任意の HTTP 動詞を追加することは可能ですか?

問題のケース:

MVC ベースのドキュメント管理システム用の WebAPI を開発しました。

API は、GET - ドキュメントのフェッチ、POST - 新しいドキュメントの作成、PUT - ドキュメントの更新、DELETE - ドキュメントの削除をサポートします。

PRINT - ドキュメントの印刷、EMAIL - ドキュメントの電子メール送信もサポートする必要があります。

MVC 側に VERB を追加するのは簡単です。[AcceptVerbs("PRINT")] 装飾を追加して完了です。

しかし、API を使用して開発者にアクセス方法を指示する必要があります。彼らは HttpClient を使用しているので、私の問題は次のとおりです。

ドロール