花香雪洁 2023-02-01 14:35 采纳率: 0%
浏览 25

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 } }

怎样编写

  • 写回答

1条回答 默认 最新

  • 二九筒 2023-02-01 15:03
    关注
    
    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;
        }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 2月1日