繁体   English   中英

如何在ASP.NET C#Webforms中使用Webhook获取json字符串作为响应

[英]How to get json string as response using Webhook in asp.net c# Webforms

我的SMS公司有一些Webhook方法可将传递报告发送到我们的首选url,然后我们必须从该url获取数据并将其更新为日志。

为此,我使用以下代码:

HttpWebRequest request = WebRequest.Create("http://example.com/sms/response.html") as HttpWebRequest;
        request.UserAgent = "jaidevkh";
        request.ContentType = "text/html,application/xhtml+xml,application/xml; charset=utf-8";
        request.Accept = "text/html,application/xhtml+xml,application/xml";
        request.Method = "GET";
        //request.ContentLength = 0;
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        WebHeaderCollection header = response.Headers;
        var encoding = ASCIIEncoding.ASCII;
        string responseText = "";
        using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
        {
            responseText = reader.ReadToEnd();
        }
        Label kl = (Label)cph.FindControl("j");
        kl.Text = responseText.ToString();

以及JSON格式,具体如下所示:

data=[
      {
          "requestId":"35666a716868323535323239",
          "userId":"38229",
          "report":[  
              {  
                  "desc":"REJECTED",
                  "status":"16",
                  "number":"91XXXXXXXXXX",
                  "date":"2015-06-10 17:09:32.0"
              }
          ],
          "senderId":"tester"
      },
      {  
          "requestId":"35666a716868323535323239",
          "userId":"38229",
          "report":[  
              {  
                  "desc":"REJECTED",
                  "status":"16",
                  "number":"91XXXXXXXXXX",
                  "date":"2015-06-10 17:09:32.0"
              },
              {  
                  "desc":"REJECTED",
                  "status":"16",
                  "number":"91XXXXXXXXXX",
                  "date":"2015-06-10 17:09:32.0"
              }
          ],
          "senderId":"tester"
      }
  ]

在此,responseText为空白。 请提出此代码有什么问题。

谢谢

周杰伦

这是从供应商接收数据的示例。

首先,您必须创建两个模型以按供应商格式获取数据:

public class Response
    {
        public string RequestId { get; set; }
        public string UserId { get; set; }
        public List<ResponseReport> Report { get; set; }
        public string SenderId { get; set; }
    }

    public class ResponseReport
    {
        public string Desc { get; set; }
        public int Status { get; set; }
        public string Number { get; set; }
        public DateTime Date { get; set; }

    }

这些模型是由您的json格式创建的

之后,您必须创建一个获取数据的处理程序(首选url)。

public class GetDelivery : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {


            var jsonSerializer = new JavaScriptSerializer();

            var jsonString = string.Empty;

            context.Request.InputStream.Position = 0;
            using (var inputStream = new StreamReader(context.Request.InputStream))
            {
                jsonString = inputStream.ReadToEnd();
            }

            var data = new List<Response>();
            data = jsonSerializer.Deserialize<List<Response>>(jsonString);


            //Modification and Saving Data

            context.Response.Write("OK");

        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

在此处理程序中,您可以获得供应商发送给您的内容,并且可以对其进行修改和保存。

注意:数据模型和json格式必须彼此相似

测试代码

最后,通过供应商测试发送数据,您可以使用以下代码:

<button id="send" class="CallHandler">Send</button>
    <script>

        $(".CallHandler").click(function () {
            alert('test');
            $.ajax({
                url: "GetDelivery.ashx",
                contentType: "application/json; charset=utf-8",
                type: 'POST',
                dataType: "json",
                data: JSON.stringify([
                    { "requestId": "35666a716868323535323239", "userId": "38229", "report": [{ "desc": "REJECTED", "status": "16", "number": "91XXXXXXXXXX", "date": "2015-06-10 17:09:32.0" }], "senderId": "tester" },
                    { "requestId": "35666a716868323535323239", "userId": "38229", "report": [{ "desc": "REJECTED", "status": "16", "number": "91XXXXXXXXXX", "date": "2015-06-10 17:09:32.0" }, { "desc": "REJECTED", "status": "16", "number": "91XXXXXXXXXX", "date": "2015-06-10 17:09:32.0" }], "senderId": "tester" }
                ]),

            });
            return false;
        });


    </script>

希望它令您满意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM