নির্ভরতা হিসাবে okhttp যোগ করার জন্য নিম্নলিখিত হিসাবে করুন
- অ্যান্ড্রয়েড স্টুডিওতে অ্যাপ্লিকেশনটিতে ডান ক্লিক করুন "মডিউল সেটিংস" খুলুন
- "নির্ভরতা" -> "লাইব্রেরি নির্ভরতা যুক্ত করুন" -> "com.squareup.okhttp3: okhttp: 3.10.0" -> অ্যাড -> ঠিক আছে ..
এখন আপনি নির্ভরতা হিসাবে okhttp আছে
এখন নীচের মত একটি ইন্টারফেস ডিজাইন করুন যাতে নেটওয়ার্ক প্রতিক্রিয়া পাওয়ার পরে আমরা আমাদের ক্রিয়াকলাপে কলব্যাক পেতে পারি।
public interface NetworkCallback {
public void getResponse(String res);
}
আমি নেটওয়ার্কটাস্ক নামে একটি শ্রেণি তৈরি করেছি যাতে আমি এই ক্লাসটি সমস্ত নেটওয়ার্ক অনুরোধগুলি পরিচালনা করতে পারি
public class NetworkTask extends AsyncTask<String , String, String>{
public NetworkCallback instance;
public String url ;
public String json;
public int task ;
OkHttpClient client = new OkHttpClient();
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
public NetworkTask(){
}
public NetworkTask(NetworkCallback ins, String url, String json, int task){
this.instance = ins;
this.url = url;
this.json = json;
this.task = task;
}
public String doGetRequest() throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
public String doPostRequest() 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();
}
@Override
protected String doInBackground(String[] params) {
try {
String response = "";
switch(task){
case 1 :
response = doGetRequest();
break;
case 2:
response = doPostRequest();
break;
}
return response;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
instance.getResponse(s);
}
}
এখন আমাকে কীভাবে কোনও ক্রিয়াকলাপে কলব্যাক পেতে হয় তা দেখান
public class MainActivity extends AppCompatActivity implements NetworkCallback{
String postUrl = "http://your-post-url-goes-here";
String getUrl = "http://your-get-url-goes-here";
Button doGetRq;
Button doPostRq;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
doGetRq = findViewById(R.id.button2);
doPostRq = findViewById(R.id.button1);
doPostRq.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.sendPostRq();
}
});
doGetRq.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.sendGetRq();
}
});
}
public void sendPostRq(){
JSONObject jo = new JSONObject();
try {
jo.put("email", "yourmail");
jo.put("password","password");
} catch (JSONException e) {
e.printStackTrace();
}
NetworkTask t = new NetworkTask(this, postUrl, jo.toString(), 2);
t.execute(postUrl);
}
public void sendGetRq(){
NetworkTask t = new NetworkTask(this, getUrl, jo.toString(), 1);
t.execute(getUrl);
}
@Override
public void getResponse(String res) {
System.out.println(res)
}
}