如何在 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 格式将根据 SMS 供应商提供如下:
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>
希望能让你满意。
我的 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 格式将根据 SMS 供应商提供如下:
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>
希望能让你满意。