OkHttp in android per effettuare richieste di networking

Cosa sto cercando di fare :

Sto cercando di apprendere l'utilizzo di Okhttp per effettuare chiamate di networking in android

  • L'utilizzo di 'layout_behavior' di AppCompat con '@ string / appbar_scrolling_view_behavior' getta un'exception
  • Calcolare il cuscinetto tra due posizioni (lat, long)
  • Basta leggere un tag NFC
  • Nascondi TabLayout su Scorrimento del contenuto invece di ToolBar
  • Android: caricare l'image e JSON usando MultiPartEntityBuilder
  • Come risolvere java.util.zip.ZipException?

  • Quello che ho fatto :

    • Ho letto la loro documentazione qui
    • Ho scaricato e aggiunto il JAR nel progetto
    • Sto usando il loro codice di esempio da qui

    MyCode ::

    MainActivity.java

    import android.app.Activity; import android.os.Bundle; import android.util.Log; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.internal.http.Request; import com.squareup.okhttp.internal.http.Response; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Request request = new Request.Builder() .url("https://raw.github.com/square/okhttp/master/README.md") .build(); Response response = client.execute(request); Log.d("ANSWER", response.body().string()); } } 

    Errore che mi affronto :

    Nella row Response response = client.execute(request); Sto ottenendo errori come:

    il client non può risolvere una variabile

    Come risolvere questo problema!


    {Aggiornare}

     public class MainActivity extends Activity { OkHttpClient client = new OkHttpClient(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Request request = new Request.Builder() .url("https://raw.github.com/square/okhttp/master/README.md") .build(); Response response = client.execute(request); Log.d("ANSWER", response.body().string()); } } 

    Ora sto affrontando l'errore come:

    nella row Response response = client.execute(request); come The method execute(Request) is undefined for the type OkHttpClient

  • Come aggiungere il token di authentication in intestazione nella libreria di Picasso
  • Come rendere gradiente trasparente?
  • eclipse android non creando attività in bianco
  • ORMLite con CursorAdapter in Android
  • Come salvare i dati in linea con SharedPreference in Android
  • Non ricevere il messaggio GCM mentre il dispositivo Android rimane collegato a WIFI
  • 8 Solutions collect form web for “OkHttp in android per effettuare richieste di networking”

    Il metodo eseguito (Request) non è definito per il tipo OkHttpClient

    Hai questa exception perché non esiste un metodo di questo tipo. execute(Request ) per OkHttpClient . Piuttosto si invoca l'object Call che si ottiene utilizzando OkHttpClient object OkHttpClient come segue:

      Call call = client.newCall(request); Response response = call.execute(); 

    Penso che dovresti usare

     Response response = client.newCall(request).execute(); 

    invece di Response response = client.execute(request);

    Documenti OkHttp

    Blog OkHttp

    Penso che dovresti usare il nuovo 2.0 RC di okHttp.

    Per fare una petizione POST, il meglio è:

     String post(String url, String json) throws IOException { RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(body) .build(); Response response = client.newCall(request).execute(); return response.body().string(); } 
     protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new AsyncTask<String, Integer, String> (){ @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub try { client = new OkHttpClient(); s = post("https://raw.github.com/square/okhttp/master/README.md",""); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); Log.e("ANSWER", "" + s); } }.execute(); } 
     @Override protected String doInBackground(String... ulr) { Response response = null; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(ulr[0]) .build(); try { response = client.newCall(request).execute(); return response.body().string(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } 

    usi come questo!

    si manca questa linea

    OkHttpClient client = new OkHttpClient();

    Prova ad aggiungere le autorizzazioni Internet nel tuo file manifesto?

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

    Devi dichiarare la variabile client come questo:

     OkHttpClient client = new OkHttpClient(); 

    Inoltre dovresti usare la tua richiesta utilizzando un thread o AsyncTask!

    È ansible leggere un'altra cosa su AsyncTask su Android in questo link: http://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/

    È sufficiente sostituire: Questo:

     Response response = client.execute(request); 

    Di:

     Response response = client.newCall(request).execute(); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.