You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 14:19:54