我正在尝试使用来自https://us.mc-api.net/ 为了一个项目,我做了一个测试。
public static void main(String[] args){
try {
URL url = new URL("http://us.mc-api.net/v3/uuid/193nonaxishsl/csv/");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
System.out.println("I/O Error");
}
}
}
这给了我一个ioexception错误,但是当我在浏览器中打开同一个页面时
false,Unknown-Username
这就是我想从代码中得到的。我是新来的,不知道为什么会这样。编辑:stacktrace
java.io.FileNotFoundException: http://us.mc-api.net/v3/uuid/193nonaxishsl/csv/
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)
at com.theman1928.Test.Main.main(Main.java:13)
3条答案
按热度按时间t2a7ltrp1#
与java.net类和实际浏览器相比,这与wire协议的工作方式有关。浏览器将比您使用的简单java.netapi复杂得多。
如果您想在java中获得等效的响应值,那么需要使用更丰富的httpapi。
此代码将给您与浏览器相同的响应;但是,您需要下载apachehttpjar组件
代码:
输出:
响应代码:404
响应:[错误,未知用户名]
ou6hu8tu2#
url返回状态码404,因此没有创建输入流(这里是轻度猜测),因此为空。对状态码进行排序,您应该没事。
用这个csv运行,结果很好:其他csv
如果错误代码对您很重要,则可以使用httpurlconnection:
这样,您就可以在进行快速if-then-else检查之前处理响应代码。
fgw7neuy3#
我在apachehttp库中尝试过。api端点似乎返回404的状态码,因此出现了错误。我使用的代码如下。
关闭
http://us.mc-api.net/v3/uuid/193nonaxishsl/csv/
与www.example.com
或者返回200的状态码,这进一步证明了api端点的错误。您可以在这里查看[ApacheHTTP组件]库。