gpt4 book ai didi

java - 无法在 java 中连接 REST api

转载 作者:行者123 更新时间:2023-12-01 13:12:00 24 4
gpt4 key购买 nike


我正在尝试从下面的 REST api 获取响应。当我在浏览器中打开该 URL 时,我会从服务器获取 xml 响应。但是当我尝试使用 java 程序获得相同的结果时,我遇到了异常

IOEXCeption
java.net.UnknownHostException: rxnav.nlm.nih.gov
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at com.test.demo.RestConnector.run(RestConnector.java:22)
at java.lang.Thread.run(Unknown Source)

请帮我解决这个问题下面是代码

import java.io.BufferedReader; 
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class RestConnector implements Runnable{

@Override
public void run() {
String URLString = "http://rxnav.nlm.nih.gov/REST/classes?src=MESH";

try {
URL url = new URL(URLString);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();

connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/xml");
if(connection.getResponseCode() != 200){
System.out.println("Failed to connect:"+connection.getResponseCode());
System.out.println("Response Message:"+connection.getResponseMessage());
}

System.out.println("I am here ");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String line ;
while((line = reader.readLine()) != null){
System.out.println(line);
}

connection.disconnect();

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
System.out.println("IOEXCeption");
e.printStackTrace();
}

}

public static void main(String[] args) {

Thread t = new Thread(new RestConnector());
t.start();


}


}

最佳答案

1) 错误明确指出“无法解析主机名”。

2) 问:您的 AndroidManifest.xml 是否授予 Internet 权限?确保它包含这一行:

<uses-permission android:name="android.permission.INTERNET" />

3) 问:这是真实设备还是模拟器?如果是后者,请考虑重新创建您的 AVD。不管你相信与否,这有时会有所帮助:Android java.net.UnknownHostException: Host is unresolved .

4)最后,这里有一些其他提示 - 包括代理服务器配置 - 可能会有所帮助:

http://eliasbland.wordpress.com/2011/02/22/java-net-unknownhostexception-on-android-a-list-of-possible-causes/

关于java - 无法在 java 中连接 REST api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22778074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com