0

OK、私はサードパーティのWeb APIを使用しており、Webフックを使用して「何かが起こった」ときに通信します。彼らの側で「何かが起こった」とき、彼らは私のコールバックURLにPOSTリクエストを送信します。

私の質問は、そのPOSTをキャッチしたら、そこからパラメーターを抽出する方法を教えてください。

パラメータを添付して独自のコールバックURLを呼び出す統合テストシナリオを構築しようとしているので、「開発マシンにコールバックをヒットさせるにはどうすればよいですか」というルーチンを実行する必要はありません。

これが私がシミュレートしようとしている方法ですが、これが私のコールバックURLへの呼び出しがどのように見えるかを正確に表したものであるかどうかはわかりません。

[Test]
public void {
const string localCallbackUrl = "http://localhost/callback/callbackaction";
HttpWebRequest request = WebRequest.Create(localCallbackUrl) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www.form-urlencoded";
request.Accept = "application/json";

string parameters = string.Format("param1={0}&param2={1}, "foo", "bar");
byte[] byteArray = Encoding.UTF8.GetBytes(parameters);
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();

var response = request.GetResponse();
}

「GetResponse()」の呼び出しはコールバックURLにヒットしていますが、Requestオブジェクトのどこにパラメーターが存在するかがわかりません。

注:APIを呼び出すためにリクエストを作成するのと同じ方法でリクエストを作成していますが、それが正しいかどうかは100%確実ではありません。

4

2 に答える 2

2

デフォルトのモデルバインダーを使用してパラメーターを解析し、クエリ文字列引数として渡すだけです。

[HttpPost]
public ActionResult CallbackAction(string param1, string param2)
{
    ...
}

または、プロパティとしてそれらを含むビューモデルを多く使用している場合:

[HttpPost]
public ActionResult CallbackAction(MyViewModel model)
{
    ...
}

パラメータの名前は、POSTリクエスト本文で送信されたものと一致する必要があります(例param1およびparam2)。

于 2012-07-20T05:47:51.603 に答える
0

少し掘り下げて(スリープ後)、ここで私の質問に対する答えを見つけました:HttpWebRequestを使用してMVCコントローラーにデータを投稿するにはどうすればよいですか?

どうやら問題は私がリクエストをどのように構築していたかでした。

誰かが答えるのにあまりにも多くの時間を無駄にしたなら申し訳ありません。

ありがとうございました

于 2012-07-20T13:38:40.103 に答える