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

Java中HttpURLConnection调用NewRelic GraphQL API时NRQL查询解析失败

解决NewRelic GraphQL API执行NRQL查询的解析错误问题

问题分析

从错误响应Parsing failed at 'My_Applic'可以看出,你的NRQL查询字符串在传输过程中被意外截断,导致API无法完整解析'My_Application'这个值。这种情况通常是手动拼接JSON请求体时的格式错误导致的,比如未正确处理字符串转义或拼接过程中出现截断。

解决方案

1. 避免手动拼接JSON,使用JSON库构造请求体

在Java中手动拼接JSON字符串很容易出现格式问题,建议使用Jackson、Gson这类成熟的JSON库来生成请求体,确保格式完全合规。

示例(使用Gson):

import com.google.gson.JsonObject;

public class NewRelicQuery {
    public static void main(String[] args) {
        JsonObject requestBody = new JsonObject();
        String nrqlQuery = "SELECT average(duration) FROM Transaction WHERE appName = 'My_Application'";
        requestBody.addProperty("query", nrqlQuery);
        
        // 将requestBody转为字符串后发送请求
        String jsonRequest = requestBody.toString();
        // 后续发送HTTP请求的逻辑...
    }
}

示例(使用Jackson):

import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;

public class NewRelicQuery {
    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        Map<String, String> requestMap = new HashMap<>();
        requestMap.put("query", "SELECT average(duration) FROM Transaction WHERE appName = 'My_Application'");
        
        String jsonRequest = mapper.writeValueAsString(requestMap);
        // 后续发送HTTP请求的逻辑...
    }
}

2. 验证NRQL查询本身的正确性

先在NewRelic官方控制台的查询界面测试这条NRQL语句,确认查询语法没有问题,排除查询本身的错误。

3. 检查请求头配置

确保请求头中包含正确的Content-Type: application/json和NewRelic的API密钥(Api-Key: YOUR_API_KEY),这些配置错误也可能间接导致解析异常。

验证

使用JSON库生成请求体后,发送的JSON内容会是标准格式:

{"query": "SELECT average(duration) FROM Transaction WHERE appName = 'My_Application'"}

API就能完整解析查询语句,返回正常结果。

内容的提问来源于stack exchange,提问作者Pavani Sandhya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:35:15