問題タブ [frombodyattribute]

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 に答える
619 参照

c# - WebApi post メソッドでのパラメータ バインディング

次のメソッドでデータを locationModel パラメータにバインドできません。私は他の投稿を見ましたが、解決策が機能していないようです:

次の方法で、フィドラーを介してメソッドを呼び出しています。

ここに画像の説明を入力

このメソッドはポスト リクエストの実行時に呼び出されますが、LocationModel は null です。LocationModel の定義は次のとおりです。

私は何を間違っていますか?

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

asp.net-apicontroller - WebApi POST 本文が FromBody とバインドされていない

ApiController のメソッドを次のように定義しました。

メソッドが呼び出されていますが、json は常に null です。私が渡しているものが私が期待しているものであることをFiddler経由で確認できます(ホスト名は明らかに編集されています)。ここで何が欠けていますか?

POST http://somehost.com/api/somemethod HTTP/1.1
ユーザー エージェント: フィドラー
ホスト: somehost.com
コンテンツの長さ: 54
コンテンツの種類: アプリケーション/json

{"サイト":"ホーム","地域":"地域","フラグ":"フラグ"}

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

post - WebApi POST メソッドで [From Body] を使用すると、NULL パラメータが取得されます

WebApi で [FromBody] を使用しています。また、リクエストを POST メソッドに送信すると、リクエストにボディ パラメータが渡されません。フィドラーと WebRequest の両方を使用してみました。[FromBody] タグを削除すると機能し、Request オブジェクトを使用して読み取りました。それに対する説明はありますか?

0 投票する
4 に答える
12736 参照

c# - FromBody 経由で DataTable を Web API POST メソッドに渡す方法 (C#)

ストアド プロシージャのいくつかのパラメーターを渡す Winforms クライアントから Web API アプリで POST メソッドを正常に呼び出しています。

ただし、可能であれば、ストアド プロシージャ (最初にクライアントで実行する必要があります) の結果を FromBody 機能を介して POST メソッドに渡したいと思います。

ネットワーク経由で送信するのは大量のデータですが、現在私が行っている方法では、SP を 2 回実行する必要があります。最初はクライアントの Winforms アプリで、次に Web API サーバー アプリで、この SP の同時呼び出しです。時々問題を起こすようです。

したがって、可能であれば、「FromBody」を介してDataTableを送信するか、できればデータのXML化またはjson化されたバージョンを送信したいと思います(そして、反対側で解凍し、取得のためにhtmlに変換します)対応する GET メソッドが呼び出されたとき。

これを表示できるコードを持っている人はいますか?

パラメータを渡すだけの既存のコードは、ここで見ることができます。

アップデート

さて、Amit Kumar Ghosh の回答に基づいて、コードを次のように変更しました。

WebApiConfig.cs

コントローラ

クライアント

...しかし、コントローラーにはまだ到達していません。具体的には、「DataTable dt = dtPassedAsJson;」のブレークポイントです。到達することはありません。

実際、文字列が渡されているのに、そこで宣言されているデータ型が「DataTable」であるため、クラッシュしないことにちょっと驚いています。

更新 2

クライアントから渡すのは実際には文字列化/json化されたDataTableではなく、文字列化/json化された汎用リストであることに気付いた後、これも試しました。

Web API コントローラー

WebApiConfig.cs

これを Register メソッドに追加しました。

...そしてこの新しいクラス:

それでも、コントローラーのメインのブレークポイント行は次のとおりです。

...達していません。

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

c# - 適度に大量のデータを Web API アプリに渡すにはどうすればよいですか?

このコードを Web API コントローラーに入れました。

次のように、"[FromBody]" arg を介してクライアント (Winforms アプリ) からほんの少しの (不自然な) データを渡す場合に問題なく動作します。

ただし、 dataAsJson への割り当てに関するコメントを逆にして、実際のデータを送信すると、次のようになります。

...失敗します。エラー メッセージはありません。DataTable (_dtUsage) は、JsonConvert.SerializeObject() メソッドで問題なく json にシリアル化されます。「大量」データ (数千レコード) があるだけです。クライアントの PostAsync() への呼び出しに到達しないため、サーバーの Post メソッドに到達することはありません。

些細な量以上のデータを送信するときにこれを成功させる回避策はありますか? それほど多くのデータをネットワーク経由で渡すのはあまり好きではありませんが (現在、クライアントとサーバーは両方ともローカルで実行されていますが、デプロイ後の状況を考えてください)、もう 1 つのオプションは、両方のクライアントから同じストアド プロシージャを実行することです (そこに Excel スプレッドシート ファイルを生成する) およびサーバーから (データを HTML に変換する)。それは「Catch-22」状況の 1 つであると思われます (「そうする場合は差し押さえられ、そうでない場合は隔離されます」)。

アップデート

user3093073 のアイデアをテストして、これを Web.config の system.webServer セクションに追加しました。

(ここで見つけたものに基づいていますが、まだ機能していません...

更新 2

ユーザーuser3093073の答えに近づくと、これも試しました:

…もったいない。

更新 3

上記のコードを、サイト内のすべての Web.config ファイルに入れていることに注意してください。

...または、それらの場所を表示する別の方法:

更新 4

ここから数日間離れて戻ってきた後、私が渡そうとしていた「実際の」データは、機能した偽/テストデータとは異なる動物であることは明らかです。

テスト データは、単純な KeyValuePair のコレクションでした。ただし、実際のデータはもっと複雑です。その複雑なデータを単純な KeyValuePair に変換しようとすると、必ず問題が発生します。したがって、これの代わりに:

...次のようなものが必要です:

...しかし、それも機能していません。「 'System.Collections.Generic.List' には 2 つの引数を取るコンストラクターが含まれていません'」などのコンパイル エラーがいくつか発生します。

最初の引数を削除すると、次のようになります。

...「引数 1: 'string' から 'int' に変換できません」などの他のコンパイル エラーが発生する

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

java - 本文の Http PUT: 不正な要求エラー、API トークンを解析できません

リクエストの解析と送信で大きな問題が発生しました。リクエストの本文で、認証中に既に正常に取得したトークンを送信する必要があります。ドキュメントは次のとおりです。

PUT /api/ver1/orders {"token" : 文字列、"order" : オブジェクト}

そして、JSONObjectを解析して取得する方法は次のとおりです。

そして、ここにHttpputリクエストがあります

別のバリアントは、com.loopj.android.http.AsyncHttpClient を使用しているときです。私は別の取得、パッチ、投稿のリクエストを行っておらず、 PUTを除いてすべてが正常に機能していました。これが私が持っているコードです:

ここにentuty/jsonObject文字列があります:

{"token":"b695911b-2973-11e6-acac-06b720391567","order":{"order_type":"1","payment_type":"2","name":"Какой-то груз"," cost":"350","description":"","from":{"latitude":"55.15919993700593","longitude":"65.15919993700593"},"fromPeriod":{"date":"1464944049"," from":"15","to":"18"},"to":{"city":"Челябинск","address":"Ленина, 3, 3"},"toPeriod":{"date" :"1464944075","from":"15","to":"18:30"},"送信者":{"name":"Попов","comment":"Попов","phone":["+70000009111"]},"受取人":{"name":"Иванов Иван Иваныч","comment":"Иванов Иван Иваныч","phone":["70000009112"]},"cargo" :[{"名前":"wwww","説明":"wwww","サイズ":{"高さ":"2","幅":"3","長さ":"4"}," loaders_count":"1","does_need_pa​​ckaging":false}]}}"width":"3","length":"4"},"loaders_count":"1","does_need_pa​​ckaging":false}]}}"width":"3","length":"4"},"loaders_count":"1","does_need_pa​​ckaging":false}]}}

私は Rest と httprequest の専門家ではないので、何が問題なのかわからず、まだ最初の put メソッドで例外があります:

{"name":"Bad Request","message":"No API token found","code":0,"status":400,"type":"yii\web\HttpException"}

アイデアがある人は助けてください!