我正在使用JotForms使用WebHook集成发送POST消息。这是发送的消息。
我正在使用Azure Functions在C#中实现WebService,以便将表单中的值插入到SQL-Server中。
#r "System.Data"
using System.Net;
using System.Data;
using System.Data.SqlClient;
using Newtonsoft.Json;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
string name = "";
dynamic body = await req.Content.ReadAsStringAsync();
log.Info(body);
var e = JsonConvert.DeserializeObject<Person>(body as string);
name = e.firstname + " " + e.lastname;
//Connect to SQL
var cnnString = "Server=tcp:XXXX.database.windows.net,1433;"+"Initial Catalog=XXXX;"
+"Persist Security Info=False;"+"User ID=XXX;"+"Password=XXXX;"+"MultipleActiveResultSets=False;"
+"Encrypt=True;"+"TrustServerCertificate=False;"+"Connection Timeout=30;";
using (SqlConnection conn = new SqlConnection(cnnString))
{
conn.Open();
// Insert Signup
var signupInsert = "INSERT INTO [dbo].[test_data] ([firstname],[lastname],[date])" +
"VALUES ('" + e.q8_FirstName + "','" + e.q9_yTus + "','" + e.q24_Birthday + "')";
// Execute and load data into database.
using (SqlCommand cmd = new SqlCommand(signupInsert, conn))
{
var rows = cmd.ExecuteNonQuery();
}
return name == " "
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Ok" );
}
}
public class Person{
public string firstname {get;set;}
public string lastname {get;set;}
public string date {get;set;}
public string q8_FirstName {get;set;}
public string q9_yTus {get;set;}
public string q24_Birthday {get;set;}
}
当我用一个只是JSON的身体进行测试时,我已成功插入成功
{
"firstname": "ni\u00f1o",
"lastname": "Lachner2",
"date":"08/08/1994",
"name":"Vincenz2",
"slug":"submit\/80565829893878\/",
"input_language":"Espa\u00f1ol",
"q8_FirstName":"Nombre",
"q9_yTus":"Apellido",
"q24_Birthday":"08\/08\/1994",
"q5_cedula":"115850853",
"q18_country":"Costa Rica",
"dropdown_search":"",
"q3_province":"San Jos\u00e9",
"q11_cantonSanJose":"Alajuelita",
"q12_cantonAlajuela":"",
"q13_cantonHeredia":"",
"q14_cantonCartago":"",
"q15_cantonPuntarenas":"",
"q16_cantonPuntarenas":"",
"q17_cantonGuanacaste":"",
"q6_phone":"88141833",
"q2_mail":"vincenz.lachner@gmail.com",
"q7_shirtSize":"S",
"q25_channel":{"0":"Correo electr\u00f3nico","other":"YOU"},
"q27_politicaDe":"Accepted",
"preview":"true"
}
如何在rawRequest中访问JSON?那是RawBody,名为rawRequest。
这些分隔符是什么? -------------------------- e5d83c25c3d6dcc0
--------------------------e5d83c25c3d6dcc0
Content-Disposition: form-data; name="rawRequest"
{"slug":"submit\/80565829893878\/","input_language":"Espa\u00f1ol","q8_FirstName":"textbox_sample0","q9_yTus":"textbox_sample1","q24_Birthday":"11\/11\/1111","q5_cedula":"1","q18_country":"Costa Rica","dropdown_search":"","q3_province":"San Jos\u00e9","q11_cantonSanJose":"Alajuelita","q12_cantonAlajuela":"","q13_cantonHeredia":"","q14_cantonCartago":"","q15_cantonPuntarenas":"","q16_cantonPuntarenas":"","q17_cantonGuanacaste":"","q6_phone":"1","q2_mail":"john@example.com","q7_shirtSize":"XS","q25_channel":["Facebook"],"q27_politicaDe":"Accepted","preview":"true"}
答案 0 :(得分:1)
如果您从JotForms发送消息,您可以使用以下代码来获取 rawRequest或者你可以得到漂亮的属性值,即JotForms中的字段。
以下是我的详细步骤:
1.创建JotForms
2.添加以下代码以获取rawRequest
if (req.Content.IsMimeMultipartContent())
{
var content = await req.Content.ReadAsMultipartAsync();
var test = content.Contents.ToList();
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (var item in test)
{
var value = await item.ReadAsStringAsync();
dic.Add(item.Headers.ContentDisposition.Name, value);
log.Info(value);
}
foreach (var item in dic)
{
log.Info($"{item.Key}:{item.Value}");
}
}
3。远程调试就在我身边。