如何将简单的 Curl 调用转换为 Java HttpURLConnection
How to convert simple Curl call to Java HttpURLConnection
有效的简单 curl 调用是:
curl https://api.github.com/search/repositories\?q\=reactive
我现在正在尝试的 Java
URL url = new URL("https://api.github.com/search/repositories\?q\=reactive");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Content-Type", "application/json");
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
int isError = con.getResponseCode();
System.out.println("Error code is " + isError);
InputStream error = con.getErrorStream();
System.out.println("Error is " + error.toString() + " \n");
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getErrorStream()));
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
System.out.println("Error: " + content.toString());
错误代码:404
错误信息:Error: {"message":"Not Found","documentation_url":"https://developer.github.com/v3"}
为什么我这样搜索找不到呢?
谢谢!
您在 java 代码中使用的 URL 用于 curl 的转义字符是错误的。删除转义字符并使用 url https://api.github.com/search/repositories?q=reactive
:
public static void main(String[] args) throws IOException {
URL url = new URL("https://api.github.com/search/repositories?q=reactive");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Content-Type", "application/json");
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
System.out.println(con.getResponseMessage());
}
输出:
OK
有效的简单 curl 调用是:
curl https://api.github.com/search/repositories\?q\=reactive
我现在正在尝试的 Java
URL url = new URL("https://api.github.com/search/repositories\?q\=reactive");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Content-Type", "application/json");
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
int isError = con.getResponseCode();
System.out.println("Error code is " + isError);
InputStream error = con.getErrorStream();
System.out.println("Error is " + error.toString() + " \n");
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getErrorStream()));
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
System.out.println("Error: " + content.toString());
错误代码:404
错误信息:Error: {"message":"Not Found","documentation_url":"https://developer.github.com/v3"}
为什么我这样搜索找不到呢?
谢谢!
您在 java 代码中使用的 URL 用于 curl 的转义字符是错误的。删除转义字符并使用 url https://api.github.com/search/repositories?q=reactive
:
public static void main(String[] args) throws IOException {
URL url = new URL("https://api.github.com/search/repositories?q=reactive");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Content-Type", "application/json");
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
System.out.println(con.getResponseMessage());
}
输出:
OK