What I am trying to do::
I am trying to learn the usage of Okhttp for making networking calls in android
What I have done
The method execute(Request) is undefined for the type OkHttpClient
You are getting this exception because there is no such method ie.execute(Request
) for OkHttpClient
. Rather it is invoked on Call
object which is obtained using OkHttpClient
object as follows:
Call call = client.newCall(request);
Response response = call.execute();
I think you should be using
Response response = client.newCall(request).execute();
instead of Response response = client.execute(request);
OkHttp docs
OkHttp Blog
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();
}
I think you should use the new 2.0 RC of okHttp.
To make a POST petition, the best is :
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();
}
You only need to replace: This:
Response response = client.execute(request);
By:
Response response = client.newCall(request).execute();
you are missing this line
OkHttpClient client = new OkHttpClient();
@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;
}
use like this!