Swift调用Azure Function无详细报错执行失败求助
问题排查:Azure Function
sent_chat_msg 函数执行失败 问题背景
开发基于Azure Function的iOS应用时,sent_chat_msg函数无法正常执行。已将函数代码简化至基础版本,但仍报错,同类配置的其他函数可正常运行,需排查问题原因。
Python编写的Azure Function代码
@app.route(route="sent_chat_msg", auth_level=func.AuthLevel.FUNCTION) def sent_chat_msg(req: func.HttpRequest) -> func.HttpResponse: current_time = "hi" return func.HttpResponse( body=json.dumps({"success": True, "date": current_time}), mimetype="application/json", status_code=200 )
Swift调用代码
func sendChatMsg(msg: Message?, userMail: String, completion: @escaping (Message?,String?, Bool?) -> Void) { let url = "api_url.com/sent_chat_msg?code=mycode" var parameters: [String: Any] = [:] if let message = msg { parameters["sender"] = userMail parameters["message"] = message.message ?? "" } print("parameters: \(parameters)") AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil) .responseJSON { response in switch response.result { case .success(let data): print("data: \(data)") if let httpResponse = response.response as? HTTPURLResponse { if httpResponse.statusCode == 200 { print("Chat message sent successfully") if let dataDictionary = data as? [String: Any], let dateString = dataDictionary["date"] as? String { print("dateString: \(dateString)") // 预期输出 "hi" let new = Message(sender: msg!.sender, message: msg!.message,dateString: dateString) completion(new,dateString, true) } } else { print("Failed to send chat message") completion(nil, nil,false) } } else { print("Unexpected response format") completion(nil, nil,false) } case .failure(let error): print("Error: \(error.localizedDescription)") completion(nil, nil,false) } }
报错信息
Azure函数端输出
2024-03-20T12:25:23Z [Error] Executed 'Functions.sent_chat_msg' (Failed, Id=78a3571c-d56d-4362-838b-a0d1c4326c08, Duration=108ms)
Swift端输出
parameters: ["sender": "something", "message": "helohiwhatsup"] Error: Response could not be serialized, input data was nil or zero length. success: Optional(false)
排查方向
- 检查Python依赖导入:当前代码使用
json.dumps但未显式导入json模块,这会直接导致函数执行失败,无法返回响应。 - 验证请求URL完整性:Swift中的
url缺少协议头(如https://),可能导致请求发送失败,返回空响应体。 - 查看Azure函数完整日志:在Azure门户中查看函数的详细执行日志,获取具体错误原因(如模块缺失、请求处理异常等)。
- 确认请求方法配置:虽然默认路由允许所有请求方法,但可显式在
@app.route中添加methods=["POST"],确保与Swift端的POST请求匹配。
内容的提问来源于stack exchange,提问作者Sipos Péter
相关产品推荐
相关产品推荐

