Ich versuche eine einfache Azure-Funktion zu erstellen, um mehr darüber zu erfahren. Es wird 3 Funktionen geben:Wie übergibt man Parameter per POST an eine Azure-Funktion?
- 1 Funktion zum Einfügen einer Zeile in eine Tabelle einer Datenbank. Diese Tabelle enthält das aktuelle Datum und einen String-Parameter, der vom Benutzer eingegeben und von GET übergeben wurde.
- 1 Funktion ähnlich der vorherigen, aber Übergabe des Parameters durch POST.
- 1 Funktion zum Lesen der Tabelle und zeigen ihren Inhalt.
Ich war in der Lage, die ersten und dritten zu tun. Aber ich kann den Parameter nicht per POST übergeben. Ich habe nach Beispielen gesucht, aber ich konnte sie nicht erfolgreich führen. Die Client-App ist eine Windows Forms-Anwendung.
Kann mir jemand ein Beispiel zeigen und wie man Parameter per POST an die Funktion weitergibt und wie man sie liest?
Dankten im Voraus
EDIT:
Hier ist der Code, um die Parameter von GET übergeben (dies funktioniert gut):
private void button2_Click(object sender, EventArgs e)
{
string cadena = lsql1.Text + "?notas=" + tNotas.Text;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(cadena);
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
if (res.StatusCode == HttpStatusCode.OK)
{
MessageBox.Show("Grabado");
}
else
{
MessageBox.Show(res.StatusDescription);
}
}catch (WebException ex)
{
using (Stream s = ex.Response.GetResponseStream())
{
StreamReader sr = new StreamReader(s);
string text = sr.ReadToEnd();
text = text.Substring(1, text.Length - 2);
sr.Close();
text = text.Replace("\\", "");
text = "{" + text + "}";
Error mensajeError = JsonConvert.DeserializeObject<Error>(text);
MessageBox.Show(mensajeError.ExceptionMessage);
}
}
}
Und hier ist der Code, um es zu empfangen, und tun das einfügen (das funktioniert auch):
[FunctionName("sql1")]
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
try
{
log.Info("C# HTTP trigger function processed a request.");
var cnnString = "Server=SERVIDOR;Database=base_prueba;User ID =azure;Password=0000;Trusted_Connection=False;Encrypt=False;";
using (SqlConnection connection = new SqlConnection(cnnString))
{
connection.Open();
SqlCommand cmd = connection.CreateCommand();
DateTime fecha = DateTime.Today;
string notas = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "notas", true) == 0)
.Value;
// insert a log to the database
cmd.CommandText = "INSERT INTO Prueba_Azure (fecha, notas) VALUES ('" + fecha.ToString() + "', '" + notas + "')";
cmd.ExecuteNonQuery();
}
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
return name == req.CreateResponse(HttpStatusCode.OK, "Done");
}
catch (Exception ex)
{
HttpResponseMessage res = req.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
return res;
}
}
Wonach ich suche, ist zu t sein per POST
schreiben Sie bitte Ihre bisherigen Funktionsbeispiele. In welcher Sprache schreiben Sie sie? Sie können Azure-Funktionen in JavaScript für Node.js, aber auch C# für ASP.NET schreiben: https://visualstudiomagazine.com/articles/2017/04/01/implementing-webhooks-azure-functions.aspx – Dai
Sorry; Ich verwende C#, um die Apps zu codieren. Ich habe den Code hinzugefügt, den ich getan habe. – davidrgh