如何从 Azure 移动应用服务调用 HTTP(Azure Functions)?
Posted
技术标签:
【中文标题】如何从 Azure 移动应用服务调用 HTTP(Azure Functions)?【英文标题】:How to call HTTP(Azure Functions) from Azure Mobile app Services? 【发布时间】:2017-09-02 08:25:38 【问题描述】:我创建了简单的 azure 函数 (Http+C#),它返回简单的测试。我想从 azure 函数返回响应到 azure 移动服务。在我从移动服务调用存储过程之前。现在我正在尝试调用它azure function(node Js) 想要从 azure 函数中取回响应。下面是 Azure 移动服务代码和我的简单 azure 函数脚本
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 ***");
;
这是我的天蓝色函数
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 ");
.谁能帮帮我?
【问题讨论】:
您目前遇到的具体问题是什么? 运行移动服务时出现内部服务器错误。我试图解决我不知道确切的解决方案。 【参考方案1】:您应该使用req.write(data)
发送您的请求正文,而不是Content-Length
。有关如何执行此操作的示例,请参阅 this answer。
您的代码应如下所示:
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);
);
;
【讨论】:
我已经尝试过,但没有从我的移动服务 API 中获得价值。出现意外的连接失败错误。以上是关于如何从 Azure 移动应用服务调用 HTTP(Azure Functions)?的主要内容,如果未能解决你的问题,请参考以下文章
Azure 移动服务从 FourSquare 收到 403 HTTP 异常
从 Azure Python HTTP 触发函数调用 Azure 逻辑应用