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!