2012-07-20 27 views
0

好的,我正在使用第三方Web API,它使用Web鉤子在它們的末端發生「事情」時進行通信。當他們結束時發生「事情」時,他們會向我的回調URL發送POST請求。如何在回調中解析來自WebRequest的參數

我的問題是一旦我發現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%確定這是正確的。

回答

2

使用默認的模型綁定來解析參數,並將它們傳遞作爲查詢字符串參數:

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

,或者如果你有很多使用包含它們的性能視圖模型:

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

參數的名稱必須與在POST請求正文中發送的參數名稱相匹配(根據您的示例param1param2)。