graphql java api_如何使用Java访问github graphql API

我需要访问github graphql API以获得有关某个存储库的一些数据。以下curl命令很好用

curl -i -H "Authorization: bearer myGithubToken" -X POST -d '{"query": "query { repository(owner: \"wso2-extensions\", name: \"identity-inbound-auth-oauth\") { object(expression:\"83253ce50f189db30c54f13afa5d99021e2d7ece\") { ... on Commit { blame(path: \"components/org.wso2.carbon.identity.oauth.endpoint/src/main/java/org/wso2/carbon/identity/oauth/endpoint/authz/OAuth2AuthzEndpoint.java\") { ranges { startingLine endingLine age commit { message url history(first: 2) { edges { node { message url } } } author { name email } } } } } } } }"}' https://api.github.com/graphql

现在,我需要调用相同的名称Java来操纵输出。这是我尝试过的代码,

public void callGraphqlApi(){

CloseableHttpClient httpClientForGraphql = null;

CloseableHttpResponse httpResponseFromGraphql= null;

httpClientForGraphql=HttpClients.createDefault();

HttpPost httpPost= new HttpPost("https://api.github.com/graphql");

String query= "query\":\"query { repository(owner: \"wso2-extensions\", name:\"identity-inbound-auth-oauth\") { object(expression: \"83253ce50f189db30c54f13afa5d99021e2d7ece\") { ... on Commit { blame(path: \"components/org.wso2.carbon.identity.oauth.endpoint/src/main/java/org/wso2/carbon/identity/oauth/endpoint/authz/OAuth2AuthzEndpoint.java\") { ranges { startingLine endingLine age commit { message url history(first: 2) { edges { node { message url } } } author { name email } } } } } } } }";

httpPost.addHeader("Authorization","Bearer myGithubToken");

try {

StringEntity params= new StringEntity(query);

httpPost.addHeader("content-type","application/x-www-form-urlencoded");

httpPost.setEntity(params);

httpResponseFromGraphql= httpClientForGraphql.execute(httpPost);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

当我调试代码时,它向我显示此错误,

HttpResponseProxy {HTTP / 1.1

400错误的请求[服务器:GitHub.com,日期:2017年2月3日,星期五,格林尼治标准时间12:14:58,内容类型:application /

json; charset = utf-8,内容长度:89,状态:400错误的请求,X-RateLimit-Limit:200,X-RateLimit-

Remaining:187,X-RateLimit-Reset:1486125149,X-OAuth-

Scopes:repo,用户,X-Accepted-OAuth-Scopes:回购,X-GitHub-Media-

Type:github.v3;format = json,Access-Control-Expose-Header:ETag,链接,X-GitHub-

OTP,X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset,X-OAuth-

Scopes,X-Accepted- OAuth范围,X轮询间隔,访问控制允许来源:*,内容安全策略:default-

src’none’,严格传输安全性:max-age = 31536000; includeSubdomains; 预加载,X-Content-Type-

Options:nosniff,X-Frame-Options:deny,X-XSS-Protection:1;模式=块,X-GitHub-

Request-Id:CF0A:0EE1:B057F26:EBCB8DF:58947441] ResponseEntityProxy

{[Content-Type:application / json; charset = utf-8,内容长度:89,已压缩:false]}}

我做错了什么?您能帮我解决这个问题吗?提前致谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
graphql-java 是 GraphQLJava 实现。这个库的目标是用于真实的生产环境。graphql-java 解析和执行查询 GraphQL 。它并不真正获取任何数据的:数据来源于执行回调或提供静态数据。graphql-java 的 "hello world":import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import static graphql.Scalars.GraphQLString; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import static graphql.schema.GraphQLObjectType.newObject; public class HelloWorld {     public static void main(String[] args) {         GraphQLObjectType queryType = newObject()                         .name("helloWorldQuery")                         .field(newFieldDefinition()                                 .type(GraphQLString)                                 .name("hello")                                 .staticValue("world")                                 .build())                         .build();         GraphQLSchema schema = GraphQLSchema.newSchema()                         .query(queryType)                         .build();         Map result = new GraphQL(schema).execute("{hello}").getData();         System.out.println(result);         // Prints: {hello=world}     } } 标签:graphql

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值