एक निर्भरता के रूप में okhttp जोड़ने के लिए निम्नानुसार है
- एंड्रॉइड स्टूडियो पर ऐप पर राइट क्लिक करें "मॉड्यूल सेटिंग्स" खोलें
- "निर्भरता" -> "पुस्तकालय निर्भरता जोड़ें" -> "com.squareup.okhttp3: okhttp: 3.10.0" -> add -> ok ..
अब आपके पास एक निर्भरता के रूप में okhttp है
अब नीचे एक इंटरफ़ेस डिज़ाइन करें ताकि नेटवर्क रिस्पॉन्स मिलते ही हम अपनी गतिविधि पर कॉलबैक कर सकें।
public interface NetworkCallback {
public void getResponse(String res);
}
मैं NetworkTask नाम की एक क्लास बनाता हूँ ताकि मैं इस नेटवर्क का उपयोग सभी नेटवर्क अनुरोधों को संभालने के लिए कर सकूँ
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)
}
}