16

私がやろうとしていること::

Androidでネットワーク呼び出しを行うためのOkhttpの使用法を学ぼうとしています


私がやったこと::

  • ここで彼らのドキュメントを読みました
  • プロジェクトにJARをダウンロードして追加しました
  • ここからサンプルコードを使用しています

マイコード::

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());

        }

    }

私が直面しているエラー::

Response response = client.execute(request); で次のようなエラーが発生しています:

クライアントは変数に解決できません

これを解決する方法!


{アップデート}

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());

    }

}

今、私は次のようなエラーに直面しています:

として行Response response = client.execute(request);The method execute(Request) is undefined for the type OkHttpClient

4

8 に答える 8

4

okHttp の新しい 2.0 RC を使用する必要があると思います。

POST請願を作成するには、次の方法が最適です。

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();
}
于 2014-06-19T07:13:48.787 に答える
3
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();

}
于 2014-07-03T09:52:46.893 に答える
2
@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;        
}

こんな使い方!

于 2015-07-30T17:30:35.103 に答える
1

マニフェスト ファイルにインターネット アクセス許可を追加してみてください。

<uses-permission android:name="android.permission.INTERNET" />
于 2015-09-08T20:55:19.287 に答える
0

次のようにクライアント変数を宣言する必要があります。

OkHttpClient client = new OkHttpClient();

また、スレッドまたは AsyncTask を使用してリクエストを使用する必要があります。

このリンクで Android の AsyncTask に関する他の情報を読むことができます: http://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/

于 2014-04-21T16:55:56.417 に答える