2017-09-02 2 views
0

Ich habe einfache azurblaue Funktion (Http + C#) erstellt, die einfachen Test zurückgibt.Ich möchte die Antwort von azurblauen Funktionen auf azurblaue mobile Dienste zurückgeben.Vorhin habe ich gespeicherte Prozedur von meinen mobilen Diensten aufgerufen. Jetzt versuche ich, dieses azurblau aufzurufen Funktion (Knoten Js) möchte die Antwort von azure Funktionen zurückbekommen. Azure Mobile Service Code und meine einfache azur Funktion Skript unterSo rufen Sie HTTP (Azure-Funktionen) von den Azure Mobile App Services auf?


 

 
module.exports = { 
 
    "post": function (req, res, next) {  
 
      console.log("Started Application Running"); 
 
     var http = require("http");  
 
     var options = { 
 
      host: "<appname>.azurewebsites.net",   
 
      path: "api/<functionname>?code=<APIkey>", 
 
      method: "POST", 
 
      headers : { 
 
       "Content-Type":"application/json", 
 
       "Content-Length": { name : "Testing application"} 
 
      }  
 
     }; 
 
     http.request(options, function(response) { 
 
      var str = ""; 
 
      response.on("data", function (chunk) { 
 
      str += chunk; 
 
      res.json(response); 
 
      console.log("Something Happens"); 
 
      }); 
 
      response.on("end", function() { 
 
      console.log(str);    
 
      res.json(response); 
 
     });   
 
     }); 
 
     console.log("*** Sending name and address in body ***");   
 
    } 
 
};

Hier ist meine azur Funktion

using System.Net; 
 

 
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) 
 
{ 
 
    log.Info("C# HTTP trigger function processed a request."); 
 

 
    // parse query parameter 
 
    //string name = req.GetQueryNameValuePairs() 
 
     // .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0) 
 
     //.Value; 
 
    string name = "divya"; 
 
    // Get request body 
 
    dynamic data = await req.Content.ReadAsAsync<object>(); 
 

 
    // Set name to query string or body data 
 
    name = name ?? data?.name; 
 

 
    return name == null 
 
     ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body") 
 
     : req.CreateResponse(HttpStatusCode.OK, "Hello Welcome "); 
 
}

.Can jemand mir helfen?

+0

Was genau das Problem ist, dass Sie Zeit haben? – Mikhail

+0

bekomme internen Serverfehler, wenn ich beweglichen Service laufen lasse. Ich versuchte zu lösen, ich kenne nicht genaue Lösung. – divya

Antwort

0

Sie sollten Ihre Anfrage Körper senden mit req.write(data), nicht in Content-Length. Ein Beispiel dafür finden Sie in this answer.

Und sollte Ihr Code wie folgt aussehen:

module.exports = { 
    "post": function (req, res, next) {  

    var http = require("http"); 

    var post_data = JSON.stringify({ "name" : "Testing application"}); 

    var options = { 
     host: "<appname>.azurewebsites.net",   
     path: "/api/<functionname>?code=<APIkey>", // don't forget to add '/' before path string 
     method: "POST", 
     headers : { 
     "Content-Type":"application/json", 
     "Content-Length": Buffer.byteLength(post_data) 
     }  
    }; 

    var requset = http.request(options, function(response) { 
     var str = ""; 
     response.on("data", function (chunk) { 
     str += chunk; 
     }); 

     response.on("end", function() { 
     res.json(str);   
     });   
    }); 

    requset.write(post_data); 
    requset.end(); 
    requset.on('error', function(e) { 
     console.error(e); 
    }); 

    } 
}; 
+0

Ich habe versucht, aber keinen Wert von meinem mobilen Service API.getting unerwarteten Verbindungsfehler erhalten. – divya

+0

Hallo, ich habe meine Antwort mit meinem Arbeitscode aktualisiert. –

Verwandte Themen