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

Roblox调用外部无认证GraphQL API失败求助

Roblox调用GraphQL API返回“Something went wrong”的排查与修复

你的代码有几个关键问题导致了这个结果,下面是具体排查和修复方案:

1. 最直接的原因:函数固定返回false

你的craftCall函数最后写死了return false,不管请求成功与否都会返回false,所以必然触发else分支打印错误提示。

2. 无法排查问题:未捕获pcall错误信息

你用了pcall但没捕获执行过程中的错误,根本不知道是网络请求失败、JSON解析出错还是API返回异常,完全没法定位问题。

修复后的完整代码

local HttpService = game:GetService("HttpService")
local open_api = "https://graphqlzero.almansi.me/api"

-- 用HttpService自动生成JSON,避免手动写JSON的语法错误
local payload = HttpService:JSONEncode({
    query = "query { post(id: 1) { id title body }}"
})

local headers = {
    ["Content-Type"] = "application/json"
}

local function craftCall()
    local response, errMsg
    local data

    -- 捕获pcall的执行状态和错误信息
    local isSuccess = pcall(function ()
        response = HttpService:PostAsync(open_api, payload, Enum.HttpContentType.ApplicationJson, false, headers)
        data = HttpService:JSONDecode(response)
    end)

    -- 请求过程出错,打印错误信息
    if not isSuccess then
        print("请求失败原因:", errMsg)
        return false
    end

    -- 未解析到有效数据
    if not data then
        print("未获取到有效返回数据")
        return false
    end

    -- 格式化打印返回数据,方便查看
    print("API返回结果:", HttpService:JSONEncode(data, true))
    return true -- 请求成功时返回true
end 

if craftCall() then
    print("Success")
else
    print("Something went wrong")
end

额外需要检查的点

  • Roblox HTTP白名单:在开发者控制台的「设置→安全」里,把https://graphqlzero.almansi.me添加到允许的HTTP请求URL列表,否则Roblox会拦截这个外部请求。
  • API可用性:手动用工具测试这个API是否能正常访问,确认你的query语句是有效的(你的原query是正确的)。
  • 网络环境:确保Roblox Studio能正常连接到外部网络,没有被防火墙或代理拦截。

内容的提问来源于stack exchange,提问作者emilie zawadzki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:05:48