Salut,
Merci de ta réponse mais le programme plante quand je fais ce code je te montre
BackgroundTask.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
public class BackgroundTask extends AsyncTask<Void, Void, String> {
private String json_url;
private ReturnValue returnValueImpl;
private String jsonParser2;// variable json a retourner a la vu
public BackgroundTask (String json_url) {
this.json_url = json_url;
}
@Override
protected String doInBackground(Void... params) //obtiens le flux json
{
try {
URL url = new URL(json_url); // connexion
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();// connexion
InputStream inputStream = httpURLConnection.getInputStream(); //lecture
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));//lecture
StringBuilder stringBuilder = new StringBuilder();//lecture
while ((jsonParser2 = bufferedReader.readLine()) != null) {//lecture
stringBuilder.append(jsonParser2 + "\n");//lecture
}
bufferedReader.close(); //stop
inputStream.close(); //stop
httpURLConnection.disconnect();//déconecter
return stringBuilder.toString().trim(); //valeur du json
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return jsonParser2;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result)//Donne le résultat
{
returnValueImpl.renvoyerValeurString(jsonParser2.toString());
}
public void setReturnListener(ReturnValue returnListener) {
this.returnValueImpl = returnListener;
}
public interface ReturnValue {
abstract void renvoyerValeurString(String valeurARenvoyer);
}
} |
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public class MainActivity extends AppCompatActivity implements BackgroundTask.ReturnValue{
private BackgroundTask mBackgroundTask;
String json_string;
String json_url="http://192.168.0.16/projet/php/fichier.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBackgroundTask = new BackgroundTask(json_url);
mBackgroundTask.setReturnListener(this);
mBackgroundTask.execute((Void)null);
TextView t =(TextView)findViewById(R.id.textView2);
t.setText(json_string);
}
public interface ReturnValue {
abstract void renvoyerValeurString(String valeurARenvoyer);
}
@Override
public void renvoyerValeurString(String valeurARenvoyer) {
mBackgroundTask = null;
//Ici je récupère directement mon json contenu dans la variable valeurARenvoyer
json_string = valeurARenvoyer;
Toast.makeText(MainActivity.this, json_string, Toast.LENGTH_SHORT).show(); } |
LOG
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.suprem.myapplication, PID: 5635
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toString()' on a null object reference
at com.suprem.myapplication.BackgroundTask.onPostExecute(BackgroundTask.java:68)
at com.suprem.myapplication.BackgroundTask.onPostExecute(BackgroundTask.java:19)
at android.os.AsyncTask.finish(AsyncTask.java:636)
at android.os.AsyncTask.access$500(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) |
il me dit qu'il ne retourne rien ou que l'object n'est pas instancier c'est sa?
si sa peut aider j'aimerais retourner se flux json
{"id":"1","timestamp":"2017-01-31 10:59:11","id_SIGFOX":"ABER","MPX":"1","RDS":"2","RF":"79","PILOT":"8","a_l":"-5","a_r":"-39","Frequence":"1034"}
Partager