[英]How to call GraphQL api from java HttpClient with query and variables?
I'm trying to call GraphQL API post endpoint with query and variables.我正在尝试使用查询和变量调用 GraphQL API后端点。 Query and variables both add as JSON object.查询和变量都添加为 JSON object。 But return "Invalid request".但返回“无效请求”。
I've read through numerous questions here on Stack overflow, but I did not encounter the problem I'm having.我在这里阅读了许多关于堆栈溢出的问题,但我没有遇到我遇到的问题。
Java sample Java样品
public class main3 {
public static void main(String[] args) throws IOException {
String line, queryString, url;
url = "https://search-sandbox.sample.com/graphql";
CloseableHttpClient client = null;
CloseableHttpResponse response = null;
client = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Authorization", "Basic VG91**");
httpPost.addHeader("Accept", "application/json");
httpPost.addHeader("Content-Type", "application/json");
try {
String query = "query getPropertiesByIds($SearchCriteriaByIds: SearchCriteriaByIdsInput) {\n"
+ " getPropertiesByIds(searchCriteriaByIds: $SearchCriteriaByIds) {\n"
+ " properties {\n"
+ " propertyId\n"
+ " }\n"
+ " }\n"
+ "}";
String variable = "{\n"
+ " \"SearchCriteriaByIds\": {\n"
+ " \"propertyIds\": [\n"
+ " 134388,\n"
+ " 424023,\n"
+ " 134388,\n"
+ " 22549064\n"
+ " ]\n"
+ " }\n"
+ "}";
Map<String, Object> variables = new HashMap<>();
variables.put("query", query);
variables.put("variables", variable);
JSONObject jsonobj;
jsonobj = new JSONObject(variables);
StringEntity entity = new StringEntity(jsonobj.toString());
httpPost.setEntity(entity);
response = client.execute(httpPost);
BufferedReader bufReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuilder builder = new StringBuilder();
while ((line = bufReader.readLine()) != null) {
builder.append(line);
builder.append(System.lineSeparator());
}
System.out.println(builder);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Return error code -返回错误代码 -
{"errorCode":1006,"errorMessage":"Invalid request.","details":null}
Please assist me to find out the issues.请协助我找出问题。
Variable must be json string but not in "".变量必须是 json 字符串,但不在“”中。
and take request as json like below Graphql Request并将请求作为 json 如下 Graphql 请求
String str= { "query": "query branchLocator ($filterCriteria: [FilterCriteria],$sortBy: SortBy){branchLocator (filterCriteria: $filterCriteria, offset: 0, limit: 20, sortBy: $sortBy) { postalCode latitude longitude addId1 addName1 addAddress1 addCity1 distance1 addId2 addName2 addAddress2 addCity2 distance2 addId3 addName3 addAddress3 addCity3 distance3 addId4 addName4 addAddress4 addCity4 distance4 addId5 addName5 addAddress5 addCity5 distance5 addId6 addName6 addAddress6 addCity6 distance6}}", "variables": {"filterCriteria":[{"key":"postalCode","filterInput":{"filterType":"eq","filterValues":["123456"]}}]} String str= { "query": "查询 branchLocator ($filterCriteria: [FilterCriteria],$sortBy: SortBy){branchLocator (filterCriteria: $filterCriteria, offset: 0, limit: 20, sortBy: $sortBy) { postalCode latitude longitude addId1 addName1 addAddress1 addCity1 distance1 addId2 addName2 addAddress2 addCity2 distance2 addId3 addName3 addAddress3 addCity3 distance3 addId4 addName4 addAddress4 addCity4 distance4 addId5 addName5 addAddress5 addCity5 distance5 addId6 addName6 addAddress6 addCity6 distance6}}”,“变量”:{“filterCriteria”:[{“key”:“postalCode ","filterInput":{"filterType":"eq","filterValues":["123456"]}}]}
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.