2013-07-19 158 views
1

我正在嘗試製作一個asmx文件(用C#編寫),它將接收來自另一個服務(本例中爲Trello)的POST請求。但是我相信我在接收'JSON有效載荷'時遇到了問題。 Trello正在創建請求,因此我不確切知道他們的代碼是什麼樣的。我使用到收到該請求的代碼的形式爲:在我的服務器上接收到Http Post請求

[WebMethod] 
public string TrelloCallback() 
{ 
    //connect to database 
    //do stuff 
    //return "OK" 
} 

然而,這立即失敗,即使我的代碼只由「迴歸正常」。我已經使用Postman(https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en)等應用程序,並已成功發送郵件並使用url excample.com/excample2.asmx/TrelloCallback向TrelloCallback發送請求,但Trello的請求只是失敗。

如果有人對可能導致此問題的原因有任何瞭解,或者有解決方法,我將非常感激。

p.s. 有效載荷的形式是:

{ 
    action: { ... }//Action (comment, move) 
    model: { ... }//Basic information 
} 

回答

2

首先,你必須確保你有ScriptService

namespace MyName 
{ 
    ... 
     [ScriptService] 
    ... 
    public class MyClass: MyWebService 
    { 
    ... 

然後你只需要通過流中讀取來獲得身體

StreamReader reader = new StreamReader(Context.Request.InputStream); 
Context.Request.InputStream.Position = 0; 
String Body= reader.ReadToEnd().ToString(); 

Context.Request.XXX提供了許多有用的消息來互操作您收到的請求。

例如 - Context.Request.Headers,Context.Request.RawUrl和Context.Request.HttpMethod。

+0

這是我用ASMX服務的方法。它允許您捕獲發佈的XML/JSON數據,然後您可以嘗試使用XmlSerializer將數據串行化到您的對象中。 – Tommassiov

相關問題