Java 以编程方式对 GraphQL API 进行 POST 调用

Java 以编程方式对 GraphQL API 进行 POST 调用
我必须发送一个带有一些标头和 graphQL 变量的查询作为对 java 中的 GraphQL API 的 POST 调用。我还必须在查询中发送一些标头和身份验证参数。现在,我正在 POSTMAN 中进行手动调用,但我想以编程方式执行此操作。你们能帮我从哪里开始吗?我的查询和变量如下

query sampleQuery($param: SampleQueryParams!, $pagingParam: PagingParams) {
sampleLookup(params: $param, pagingParams: $pagingParam) {
ID
name1
name2
}
}
我的 GraphQL 变量如下:

{"param": {"id": 58763897}, "pagingParam": {"pageNumber": 0, "pageSize": 10 } }

怎样编写


public String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 设置编码格式
            conn.setRequestProperty("Charset","UTF-8");
            conn.setRequestProperty("Content-type", "application/json;charset=UTF-8");
            // 获取URLConnection对象对应的输出流
             out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
             out.print(param);
            // flush输出流的缓冲
               out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));

            String line;
            while ((line = in.readLine()) != null) {
                line = new String(line.getBytes(), "utf-8");
                result += line;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch( IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }