Android Rest Web Service

Ghassen1433

عضو نشيط
إنضم
16 ديسمبر 2013
المشاركات
267
مستوى التفاعل
468
Sallém allaikom
Je cherche à consommer un REST Web Service c#
A travers une application Android
mais j'arrive pas
Est-ce que vous pouvez m'aider svp
?
 
Poste tes codes pour pouvoir t'aider
 
Voila mon code
 

المرفقات

  • main.txt
    2,5 KB · المشاهدات: 5
  • manifest.txt
    774 بايت · المشاهدات: 3
Java:
package com.example.Soc.algorism;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class MainActivity extends AppCompatActivity {

    String feedUrl = "http://localhost:52570/Service1.svc/GetDataUsingDataContract/";
    String responseString;
    TextView txtView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txtView = (TextView) findViewById(R.id.textView);
        new GetData().execute(); // exécution de la requête
    }

    public class GetData extends AsyncTask<Void, Void, String> {

        @Override
        protected void onPreExecute()
        {
            super.onPreExecute();
            Log.i("onPreExecute","Creation fait avec succee!!!");         
        }

        @Override
        protected Void doInBackground(Void... params) {
            HttpClient client = new DefaultHttpClient(); // HttpClient est obsolète, faut utiliser HttpURLConnection
            HttpGet getRequest = new HttpGet(feedUrl);

            try {
                HttpResponse response = client.execute(getRequest);
                StatusLine statusLine = response.getStatusLine();
                int statusCode = statusLine.getStatusCode();
                if(statusCode != 200) return null;
             
                InputStream jsonStream = response.getEntity().getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader((jsonStream)));
                StringBuilder builder = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    builder.append(line);
                }

                return builder.toString(); // retourne le résultat en paramètre dans onPostExecute

            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }

        protected void onPostExecute(String result) {
            super.onPreExecute();
            Log.i("onPreExecute","Creation fait avec succee!!!");
            if (result != null) txtView.setText(result); // on vérifie si le résultat existe, faut prévoir la gestion des erreurs
        }
    }
}
 
التعديل الأخير بواسطة المشرف:
J'ai essayé de corriger mes erreurs
mais j'ai encore des problèmes
:crying:
Prière de m'aider
 

المرفقات

  • main.txt
    2,8 KB · المشاهدات: 6
Tu peux pas changer l'état d'une view en dehors de l'UI thread
Donc pas de TextView.setText dans la méthode doInBackground
La class AsyncTask te fournit des méthodes spéciales onPostExecute, onPreExecute... qui s'exécutent dans la UI thread, tu peux les utiliser pour mettre à jour tes views et une méthode qui va s'exécuter dans un thread en arrière plan doInBackground
AsyncTask a été créée pour simplifier l'utilisation des threads dans andoird
 
التعديل الأخير:
Pour l'émulateur faut utiliser l'addresse 10.0.2.2 au lieu de localhost
 
C à d
adress ip de ma machine
ou bien je mets

??10.0.2.2
 
أعلى