在我的服务器上接收Http Post请求

时间:2013-07-19 17:15:01

标签: asmx webmethod webhooks trello

我正在尝试制作一个asmx文件(用c#编写),它将从另一个服务接收POST请求,在本例中为Trello。但是我相信我在收到'JSON有效载荷'时遇到了麻烦。 Trello正在创建请求,因此我不确切知道他们的代码是什么样的。我用来接收请求的代码格式如下:

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

然而,即使我的代码只包含“return OK”,这也会立即失败。我使用了Postman(https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en)之类的应用程序,并使用url excample.com/excample2.asmx/TrelloCallback成功向TrelloCallback发送了post和get请求,但Trello的请求只是失败了。

如果有人知道可能导致此问题的原因,或者有解决方法,我将非常感激。

P.S。 有效载荷的格式为:

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

1 个答案:

答案 0 :(得分:3)

首先,您必须确保拥有ScriptService

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

然后你只需要通读流来获取Body

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。