Comment faire pour résoudre java.net.UnknownHostException
J'ai été pris d'autorisations internet dans le fichier de manifeste. Ma connexion au réseau mobile est également à l'œuvre.
/**
* Created by Yogesh on 5/07/2016.
*/
public class All_Item_Fragment extends android.support.v4.app.ListFragment {
//Declare Variables
JSONArray jsonarray = null;
ListView list;
ListViewAdapter adapter;
ArrayList<HashMap<String, String>> itemlist;
static String NAME = "name";
static String DESCRIPTION = "Description";
static String PRICE = "price";
static String IMAGE = "image_path";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.all_item_layout, container, false);
itemlist = new ArrayList<HashMap<String, String>>();
new ReadJSON().execute();
list = (ListView) view.findViewById(android.R.id.list);
return view;
}
private class ReadJSON extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
//Create an array
itemlist = new ArrayList<HashMap<String, String>>();
//Retrieve JSON Objects from the given URL address
JSONObject jsonobject = JSONfunctions.getJSONfromURL("http://mahatiffin.com/web/selectallmenu.php");
try {
//Locate the array name in JSON
jsonarray = jsonobject.getJSONArray("AllMenu");
for (int i = 0; i < jsonarray.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
jsonobject = jsonarray.getJSONObject(i);
//Retrive JSON Objects
map.put("name", jsonobject.getString("name"));
map.put("Description", jsonobject.getString("Description"));
map.put("price", jsonobject.getString("price"));
map.put("image_path", jsonobject.getString("image_path"));
//Set the JSON Objects into the array
itemlist.add(map);
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void args) {
//Pass the results into ListViewAdapter.java
adapter = new ListViewAdapter(getActivity(), itemlist);
//Set the adapter to the ListView
list.setAdapter((ListAdapter) adapter);
}
}
}
public class JSONfunctions {
public static JSONObject getJSONfromURL(String url) {
InputStream is = null;
String result = "";
JSONObject jArray = null;
//Download JSON data from URL
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}
//Convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
try {
jArray = new JSONObject(result);
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
return jArray;
}
}
En mai fragment de page, rien ne montre que de page vide s'affiche..
05-18 17:43:11.730 27019-27019/com.androidbelieve.MahaTiffin D/dalvikvm: VFY: remplacement de l'opcode 0x6f à 0x0000
05-18 17:43:11.740 27019-27082/com.androidbelieve.MahaTiffin E/log_tag: Erreur de conversion résultat de java.lang.NullPointerException
05-18 17:43:11.740 27019-27082/com.androidbelieve.MahaTiffin E/log_tag: Erreur lors de l'analyse des données org.json.JSONException: Fin de saisie à caractère 0 de
05-18 17:43:11.770 27019-27082/com.androidbelieve.MahaTiffin W/dalvikvm: threadid=12: thread sortir avec uncaught exception (groupe=0x40e11378)
05-18 17:43:11.770 27019-27082/com.androidbelieve.MahaTiffin E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: Une erreur s'est produite lors de l'exécution de doInBackground()
au android.os.AsyncTask$3.fait(AsyncTask.java:299)
à java.util.de façon concomitante.FutureTask$De Synchronisation.innerSetException(FutureTask.java:273)
à java.util.de façon concomitante.FutureTask.setException(FutureTask.java:124)
à java.util.de façon concomitante.FutureTask$De Synchronisation.innerRun(FutureTask.java:307)
à java.util.de façon concomitante.FutureTas...(FutureTask.java:137)
au android.os.AsyncTask$SerialExecutor$1.exécuter(AsyncTask.java:230)
à java.util.de façon concomitante.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
à java.util.de façon concomitante.ThreadPoolExecutor$Par Travailleur.exécuter(ThreadPoolExecutor.java:569)
à java.lang.Fil de discussion.exécution(Thread.java:856)
Causés par: java.lang.NullPointerException
au com.androidbelieve.MahaTiffin.All_Item_Fragment$ReadJSON.doInBackground(All_Item_Fragment.java:58)
au com.androidbelieve.MahaTiffin.All_Item_Fragment$ReadJSON.doInBackground(All_Item_Fragment.java:43)
au android.os.AsyncTask$2.appel(AsyncTask.java:287)
à java.util.de façon concomitante.FutureTask$De Synchronisation.innerRun(FutureTask.java:305)
à java.util.de façon concomitante.FutureTas...(FutureTask.java:137)
au android.os.AsyncTask$SerialExecutor$1.exécuter(AsyncTask.java:230)
à java.util.de façon concomitante.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
à java.util.de façon concomitante.ThreadPoolExecutor$Par Travailleur.exécuter(ThreadPoolExecutor.java:569)
à java.lang.Fil de discussion.exécution(Thread.java:856)
05-18 17:43:12.420 27019-27019/com.androidbelieve.MahaTiffin W/FragmentManager: moveToState: Fragment de l'état pour Veg_Item_Fragment{415d7030 #1 id=0x7f0c00a0 android:switcher:2131493024:1} pas mis à jour inline; attendu l'état 3 à 2
05-18 17:43:12.530 27019-27104/com.androidbelieve.MahaTiffin E/log_tag: Erreur dans la connexion http java.net.UnknownHostException: Impossible de résoudre l'hôte "mahatiffin.com": Aucune adresse associée avec le nom d'hôte
05-18 17:43:12.540 27019-27104/com.androidbelieve.MahaTiffin E/log_tag: Erreur de conversion résultat de java.lang.NullPointerException
05-18 17:43:12.540 27019-27104/com.androidbelieve.MahaTiffin E/log_tag: Erreur lors de l'analyse des données org.json.JSONException: Fin de saisie à caractère 0 de
05-18 17:43:12.570 27019-27104/com.androidbelieve.MahaTiffin W/dalvikvm: threadid=14: thread sortir avec uncaught exception (groupe=0x40e11378)
05-18 17:43:12.570 27019-27104/com.androidbelieve.MahaTiffin I/Processus: l'Envoi du signal. PID: 27019 SIG: 9
Comment puis-je résoudre ce problème..
supprimer la connexion succès de la chaîne de réponse
"connexion réussie" supprimer du JSON forme mahatiffin.com/web/selectallmenu.php et exécuter le programme.
voici mon fichier php
<?php $hostname = "localhost"; $username = "mahatiff_user"; $password = "vashi@123"; $database = "mahatiff_db"; $connect = mysqli_connect($hostname, $username, $password, $base); if ($connexion) { echo "connexion réussie" . "<br>"; } else { echo "pas connecté"; } ?>
OriginalL'auteur yogesh puranik | 2016-05-19
Vous devez vous connecter pour publier un commentaire.
Raison: Généralement, le UnknownHostException se déclenche lorsque vous ne pouvez pas résoudre le enregistrement DNS de l'adresse URL que vous avez fournie. Il y a un délai raisonnable pour cette opération, mais si vous avez une faible connexion Wi-Fi ou vous n'avez pas assez de signal sur votre appareil, la communication peut être interrompue au milieu, entre l'envoi d'une demande et à recevoir une réponse, de sorte que votre appareil ne reçoit pas de réponse, donc il pense que c'est un DNS délai d'attente.
Longue histoire courte, il y a deux raisons principales à l'exception:
Solution: Avant toute demande de vérification de la disponibilité d'internet
jeff, mais, je pense, de la vérification de la connexion avant que la demande n'est pas vous permet d'économiser de connexion s'affaiblir entre l'envoi d'une demande et recevoir une réponse ou pendant la réception d'une réponse. Suis-je le droit?
OriginalL'auteur joe jeff
Supprimer la Chaîne "connexion réussie" de Php, Json, au début de la page.
2) Problème de Classe cast exception: modifier comme ci-dessous :
et
et
supprimer "itemlist = new ArrayList>();" à partir de
doInBackground()
méthode.poste votre carte code ici.
Voir ma réponse mis à jour
thnxx monsieur, je vais vérifier ce code
après avoir remplacer l'adaptateur.notifydatasetchanged(); il est dit de créer la méthode notifydatasetchanged()
OriginalL'auteur Suhas Bachewar