これは私を狂ってしまいます。私はASP.NET MVCを使用しています。私は別のサーバー(私の制御下ではない)によって呼び出されるコールバックURLとして機能するHttpPostアクションを持つコントローラを持っています。 WebAPIやModel Bindingを使用せずにJSONを動的に読み込みたいURLには、クエリ文字列パラメータも渡されます。私が使用して掲載入力を読んでみましたASP.NET MVCは未処理のJSONのポストデータを読み込みます
http://domain.com/callback?secret=1234
:
[HttpPost]
public ActionResult Callback(String secret)
{
String jsonData = new StreamReader(this.Request.InputStream).ReadToEnd();
// ...
}
はしかし "jsonData" は常にnullまたは空の
コールバックURLは次のようになります。
投稿された入力を取得してJsonFxに貼り付けて、コンテンツに動的にアクセスできるようにしたいだけです。どのようにこれを行うに最も簡単な方法で任意のアイデア?
UPDATE
私は、上記の(jsonDataがnullまたは空になります)動作していませんが、以下は、私はなけなしのオプションを設定する場合、私は持っている以下の...
を発見しました呼び出し側のサーバ上で、「秘密」のクエリ文字列パラメータを省略することができます。これは、私のサーバではないため、私がそのことでできることです。この場合、jsonDataは正しいがJSON文字列を掲載しているでしょう:
[HttpPost]
public ActionResult Callback(/* String secret */)
{
String jsonData = new StreamReader(this.Request.InputStream).ReadToEnd();
// ...
}
これは回避することは非常にイライラさせられると私は、クエリ文字列の両方を受け入れるための簡単な方法を知っていて、標準のMVCでJSONデータを掲載していませんコントローラ。
GET、フォームPOST、JSON POST、JSON POST、クエリ文字列などのさまざまなデータをさまざまなサードパーティのサーバーから受け取るアクションメソッドを持つコールバックコントローラがあります。これらはマーチャント型のコールバックで、情報を伝達するための形式やメソッドを制御できません。コールバックを受け入れてそこにあるべき情報を処理するだけです。
"JSON POST w/a Query String"の場合を除いて、コントローラのすべてが正常に動作します。
これは、標準のASP.NET MVCコントローラの欠点と思われる(少なくとも私にとって)。 ???
誰にでも標準のASP.NET MVCコントローラで使用できるこのソリューションを提案できますか?
あなたの最初のアプローチは、あなたが考慮に入れる場合はASP.NET MVCモデルバインディングという事実は、あなたがそれを巻き戻す必要がありますので、すでに、ストリームを読んで持って動作するはず
投稿すると、すべてのjsonが「jsonData」に等しくなります。例えば'{{jsonData:[{...すべてのjson stuff ...}}}];'これはテストしていませんが、うまくいくかもしれません。 – jzm
私は情報を投稿するサーバを制御できません。私は上記のアップデートを追加しました。 – lantram
なぜ名前 'jsonData'を選択しますか?、jsonデータが別の名前で来ている可能性があります。名前のFormCollectionを検査してみてください。 – tkt986