UnknownHostException: le nom ou le service ne sait pas
Je suis tenter de renvoyer des données à partir d'une API en utilisant OkHttpClient dans com.squareup.okhttp. J'ai rencontré quelques erreurs que j'ai finalement été en mesure de surmonter, mais je ne peux pas obtenir au-delà de cet hôte erreur d'exception et de rien ici semble être assez précis pour mon cas, pour être en mesure de résoudre.
Ci-dessous le code que j'ai tenté avec la sortie avec elle, si quelqu'un a une idée de comment résoudre l'erreur, j'apprécierais.
CODE
public void connect() {
OkHttpClient client = new OkHttpClient();
com.squareup.okhttp.Request request = new com.squareup.okhttp.Request.Builder()
.url("https://socialweb-analytics.lcloud.com/api/public/reports/jobs?companyKey=ato")
.get()
.addHeader("authorization", "Basic c2RidXNpbmVzc2FuYWx5dGljc0BhdG8uZ292LmF1OkFuYWx5dGljezEh")
.addHeader("cache-control", "no-cache")
.addHeader("postman-token", "65ef5553-77b5-053f-9c01-4fdf76bdc92f")
.build();
System.out.println(request.toString());
try {
Response response = client.newCall(request).execute();
System.out.println(response);
} catch (IOException e) {
e.printStackTrace();
}
}
SORTIE
Request{method=GET, url=https://socialweb-analytics.lcloud.com/api/public/reports/jobs?companyKey=ato, tag=null}
java.net.UnknownHostException: socialweb-analytics.lcloud.com: Name or service not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:922)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1314)
at java.net.InetAddress.getAllByName0(InetAddress.java:1267)
at java.net.InetAddress.getAllByName(InetAddress.java:1183)
at java.net.InetAddress.getAllByName(InetAddress.java:1119)
at com.squareup.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.squareup.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
at com.squareup.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
at com.squareup.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
at com.squareup.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:344)
at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:327)
at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:245)
at com.squareup.okhttp.Call.getResponse(Call.java:267)
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:224)
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:195)
at com.squareup.okhttp.Call.execute(Call.java:79)
at technical_services.persistence.lithium.LithiumDataStore.connect1(LithiumDataStore.java:127)
at application.lithium_etl.LithiumTestController.main(LithiumTestController.java:24)
Je suis confronté au même problème que vous avez. Avez-vous été en mesure d'arriver à une solution?? @Jordan Macey-Smith ?
OriginalL'auteur Jordan Macey-Smith | 2015-10-09
Vous devez vous connecter pour publier un commentaire.
D'erreur du type "java.net.UnknownHostException: [nom d'hôte]"
La raison en est votre nom d'hôte n'est pas dans /etc/hosts, La solution est simple:
modifiez la ligne qui ressemble à:
:
Enregistrer et quitter. Si le problème existe toujours, peut-être vous avez besoin de redémarrer ou d'exécuter :
Espère que cela peut vous aider!
OriginalL'auteur zhenbo xu
Expansion sur zhenbo xu grande réponse c'est ce que j'ai fait pour automatiser les choses avec
sed
dans EC2.sudo sed -i -e '/127.0.0.1/s/\(localhost\)/'$(hostname)' \1/' /etc/hosts
Remarque que, pour permettre l'expansion des variables les guillemets à la fin et redémarrez autour de la shell interne est exécuté appel.
hostname
est un exécutable sur certains systèmes Linux (mais peut-être pas tous, de sorte que vous pouvez utiliser une variable d'environnement à la place,ou de supprimer les guillemets autour de la shell interne est exécuté et l'utilisation statique de la chaîne).La
\1
estsed
de la magie, il met l' "capturé" chaîne de recherche (s/recherche/remplacement/) dans l'échappé parenthèses en arrière dans la chaîne de remplacement.OriginalL'auteur dragon788
Puisque vous n'avez pas posté votre code comment votre
connect()
appelé, donc veuillez vous référer à mon travail suivants du codePuis à l'intérieur de onCreate:
Mon application de fonctionner et a obtenu le résultat suivant (peut-être en raison de l'expiration de/invalid token):
P/S: assurez-vous que vous avez défini
<uses-permission android:name="android.permission.INTERNET" />
à l'intérieur deAndroidManifest.xml
fichierOriginalL'auteur BNK