如何使用 HttpUrlConnect 使用 java 查询 Github graphql API
Posted
技术标签:
【中文标题】如何使用 HttpUrlConnect 使用 java 查询 Github graphql API【英文标题】:How to query Github graphql API with java using HttpUrlConnect 【发布时间】:2018-04-22 10:09:53 【问题描述】:我不知道我的代码出了什么问题,当我尝试向 GitHub 发出请求时,我不断收到错误 401。我的应用之前使用 REST API 并将其转换为 Graphql,但我发现它很困难
private static String makeHttpRequest(URL url) throws IOException
String jsonResponse = "";
// If the URL is null, then return early.
if (url == null)
return jsonResponse;
HttpURLConnection urlConnection = null;
InputStream inputStream = null;
try
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setReadTimeout(10000 /* milliseconds */);
urlConnection.setConnectTimeout(15000 /* milliseconds */);
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setRequestProperty("Authorization","Bearer token");
urlConnection.setRequestProperty("Content-Type", "application/json");
DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
wr.writeBytes("\"query\":\"querysearch(type:USER query:\"location:lagos language:java\")userCount");
wr.flush();
wr.close();
int rc = urlConnection.getResponseCode();
inputStream = urlConnection.getInputStream();
jsonResponse = readFromStream(inputStream);
catch (IOException e)
Log.e(LOG_TAG, "Problem retrieving the earthquake JSON results.", e);
finally
if (urlConnection != null)
urlConnection.disconnect();
if (inputStream != null)
inputStream.close();
return jsonResponse;
【问题讨论】:
【参考方案1】:发现错误
我的令牌有问题,查询格式应该是错误的
"\"query\": \"query search ( type : USER, query : \\\"location:lagos\\\" ) userCount \""
感谢您的建议
【讨论】:
【参考方案2】:授权标头令牌可能无效。 HTTP 401 = 未授权。
【讨论】:
“不记名令牌”。令牌是占位符,对吧?您需要从服务提供商处获取。有点像密码。 是的,我有,但仍然面临同样的问题。我确实用我的访问令牌替换了令牌【参考方案3】:我建议尝试使用 Curl 发出相同的请求,当您看到成功时 - 将相同的参数/标头应用于 HttpUrlConnection。
【讨论】:
以上是关于如何使用 HttpUrlConnect 使用 java 查询 Github graphql API的主要内容,如果未能解决你的问题,请参考以下文章