A web service is a standard for exchanging information between different types of applications irrespective of language and platform. We can easily create a restful web service application in android to authenticate or save information into the external database such as oracle, mysql, postgre sql, sql server using other application developed in java, .net, php etc languages.
Steps to call web service in your project.
Steps to call web service in your project.
- Crate a project in android studio.
- Open manifest.xml and add a permission to it.
<uses-permission android:name="android.permission.INTERNET" />
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pankaj.simple.webservice">
<!--permissions-->
<uses-permission android:name="android.permission.INTERNET" />
<!--application-->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--activities-->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
- Open build.gradle(app) and add
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.pankaj.simple.webservice"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
/*___________add legacy for_____________*/
android {
useLibrary 'org.apache.http.legacy'
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:23.2.1'
testCompile 'junit:junit:4.12'
} - Create JSONParser.Java class to handle web service operation
package com.pankaj.simple.webservice;
import android.os.AsyncTask;
import android.util.Log;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpParams;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
public class JSONParser {
static InputStream is = null;
static JSONArray jObj = new JSONArray();
static String json = "";
private String _url;
private List<NameValuePair> _params;
// constructor
public JSONParser() {
}
// function get json from url
// by making HTTP POST or GET mehtod
public JSONObject makeHttpRequest2(String url, String method, List<NameValuePair> params) {
// Making HTTP request
try {
// check for request method
if (method == "POST") {
// request method is POST
// defaultHttpClient
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} else if (method == "GET") {
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
Log.v("json", json);
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
JSONObject jObj = null;
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
/*________not in use this will be use in next level webservicess_________________*/
/*______________________start________________________________*/
public JSONArray makeHttpRequest(String url, String method,
List<NameValuePair> params) {
// Making HTTP request
try {
// check for request method
if (method == "POST") {
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
//httpPost.addHeader("test", "test");
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} else if (method == "GET") {
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
Log.v("json", json);
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONArray(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
try {
jObj = new JSONArray("[{\"status\":\"failure\"}]");
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
// return JSON String
return jObj;
}
public static void setTcpNoDelay(HttpParams params, boolean value) {
System.out.println("asd");
}
public static String getJSONString(String url) {
String jsonString = null;
HttpURLConnection linkConnection = null;
try {
URL linkurl = new URL(url);
linkConnection = (HttpURLConnection) linkurl.openConnection();
int responseCode = linkConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream linkinStream = linkConnection.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int j = 0;
while ((j = linkinStream.read()) != -1) {
baos.write(j);
}
byte[] data = baos.toByteArray();
jsonString = new String(data);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (linkConnection != null) {
linkConnection.disconnect();
}
}
return jsonString;
}
} - Open activity_main.xml and update this
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.pankaj.simple.webservice.MainActivity">
<!--button to click for call webservice-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="callService"
android:text="Call Service" />
</RelativeLayout> - Open MainActivity.Java and update this like below codes
package com.pankaj.simple.webservice;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
boolean showLoader = true;//if you want to show loader view then put showLoader = true, else showLoader = false
String TAG = "tag_webservice";
String webservice = "Enter your webservice here";//like ;- http://servername/apppath/webservicename.php
String RESPONSE_SUCCESS = "success";
List<NameValuePair> params = new ArrayList<>();//this is the required parameter
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void callService(View view) {
params.add(new BasicNameValuePair("parameterName1", "value1"));
params.add(new BasicNameValuePair("parameterName2", "value2"));
//add more parameter same as above
//call webservice
if (webservice.equalsIgnoreCase("Enter your webservice here")) {
Toast.makeText(this, "Enter webservice first", Toast.LENGTH_SHORT).show();
} else {
new LoadDataAsyncTask().execute();
}
}
//webservice
class LoadDataAsyncTask extends AsyncTask<String, Void, JSONObject> {
String status;
ProgressDialog dialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(MainActivity.this);
dialog.setMessage("Please wait...");
dialog.setCanceledOnTouchOutside(false);
if (showLoader) {
dialog.show();
}
}
@Override
protected JSONObject doInBackground(String... args) {
Log.e(TAG, "params=" + params);
Log.e(TAG, "webservice=" + webservice);
JSONObject json = new JSONParser().makeHttpRequest2(webservice, "POST", params);
return json;
}
//update your ui according to recieved data
@Override
protected void onPostExecute(JSONObject jsonObject) {
super.onPostExecute(jsonObject);
if (showLoader) {
dialog.dismiss();
}
try {
Log.e(TAG, "webservice_responce=" + jsonObject.toString());
// yow will recieve responce like this
// webservice_responce={"is_array":1,"message":"success","result":"test result"}
status = jsonObject.getString("message");
if (status.equals(RESPONSE_SUCCESS)) {
String is_array = jsonObject.getString("is_array");
String result = jsonObject.getString("result");
} else {
Toast.makeText(MainActivity.this, status, Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
} - Now run your application.
- click on "Call Service" Button andafter some moment you will receive responce like -
webservice_responce={"is_array":1,"message":"success","result":"test result"} - Now parse data in on post methode -
protected void onPostExecute(JSONObject jsonObject) {
super.onPostExecute(jsonObject);
if (showLoader) {
dialog.dismiss();
}
try {
Log.e(TAG, "webservice_responce=" + jsonObject.toString());
// yow will recieve responce like this
// webservice_responce={"is_array":1,"message":"success","result":"test result"}
status = jsonObject.getString("message");
if (status.equals(RESPONSE_SUCCESS)) {
String is_array = jsonObject.getString("is_array");
String result = jsonObject.getString("result");
} else {
Toast.makeText(MainActivity.this, status, Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} - Good bye, Thanks to read this blog.


No comments:
Post a Comment