Monday, June 24, 2019

Soap in android #android #soap protocol #xml

Today I will explain to you how to load data using soap. Soap is not much used today but it has its own features like security so it is used even today

Points to Note
SOAP is a communication protocol designed to communicate via Internet.

SOAP can extend HTTP for XML messaging.

SOAP provides data transport for Web services.

SOAP can exchange complete documents or call a remote procedure.

SOAP can be used for broadcasting a message.

SOAP is platform- and language-independent.

SOAP is the XML way of defining what information is sent and how.

SOAP enables client applications to easily connect to remote services and invoke remote methods.


Manifest file


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"    
package="com.vishalsingh.soap">
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
       <application        
 android:usesCleartextTraffic="true"  
 android:allowBackup="true"       
 android:icon="@mipmap/ic_launcher"      
 android:label="@string/app_name"       
 android:roundIcon="@mipmap/ic_launcher_round" 
 android:supportsRtl="true"       
 android:theme="@style/AppTheme">     
   <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>

Java file


package com.vishalsingh.soap;
import android.content.Context;
import android.os.AsyncTask;
import android.os.PowerManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;import android.widget.TextView;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {

    SoapObject result;   
 Workertask workertask;   
 TextView textView; 
   String mytext;    
String SchId;
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.textview);

        workertask = new Workertask();
        workertask.execute();

    }

    private class Workertask extends AsyncTask {
        String[] separated;
       int count = 0; 
       String authenticated;

        @Override
        protected Object doInBackground(Object[] objects) {
            String SOAP_ACTION = "Your Soap Action";
            String NAMESPACE = "Your namespace";
            String METHOD_NAME = "your method";
            String URL = "your url";
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
            request.addProperty("un", "sumit");
            request.addProperty("pass", "billy");
            request.addProperty("DeviceId", "00");
            request.addProperty("Technology", "android");
            request.addProperty("ISNew", "0");
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);
            envelope.setOutputSoapObject(request);
            envelope.dotNet = true;
            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            try {
                androidHttpTransport.call(SOAP_ACTION, envelope);
                result = (SoapObject) envelope.bodyIn;
            } catch (IOException e) {
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                e.printStackTrace();            }
            count = result.getPropertyCount();
            authenticated = result.getProperty(0).toString();
            separated = new String[count];
            separated = (authenticated).split("%");
            SchId = separated[0]; 
          String SchName = separated[1];
          String fName = separated[2];

            return null;
        }

        @Override
        protected void onPostExecute(Object o) {
            textView.setText(SchId);
            super.onPostExecute(o);
        }
    }
}


Xml file


<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       android:id="@+id/textview" 
       app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

Thursday, June 20, 2019

Retrofit using post method Complex json

Retrofit is network library which uses http request to get data from the server . I  am going to give you a example by using complex json and post method to load data .

Manifest file


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  package="com.vishalsingh.retrofit">
    <uses-permission android:name="android.permission.INTERNET" />
    <application       
      android:allowBackup="true"   
      android:icon="@mipmap/ic_launcher"  
      android:label="@string/app_name"    
      android:networkSecurityConfig="@xml/actions"  
      android:roundIcon="@mipmap/ic_launcher_round"  
      android:supportsRtl="true"     
   android:theme="@style/AppTheme">    
    <activity android:name=".MainActivity" />   
     <activity android:name=".Main2Activity">     
       <intent-filter>           
     <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>  
      </activity>
        <meta-data          
  android:name="com.google.android.actions"     
       android:resource="@xml/actions" />  
  </application>
</manifest>

Library pojo.java


package com.vishalsingh.retrofit.Pojo;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Library {

    @SerializedName("Status")
    @Expose    private Boolean status;  
  @SerializedName("Error")
    @Expose    private Error error;  
  @SerializedName("Response")
    @Expose  
  private List<Response> response = null;
    public Boolean getStatus() {
        return status;    }

    public void setStatus(Boolean status) {
        this.status = status;    }

    public Error getError() {
        return error;    }

    public void setError(Error error) {
        this.error = error;    }

    public List<Response> getResponse() {
        return response;    }

    public void setResponse(List<Response> response) {
        this.response = response;    }

}

Error pojo.java


package com.vishalsingh.retrofit.Pojo;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Error {

    @SerializedName("Code")
    @Expose    private Integer code;   
 @SerializedName("Message")
    @Expose    private String message;
    public Integer getCode() {
        return code;    }

    public void setCode(Integer code) {
        this.code = code;    }

    public String getMessage() {
        return message;    }

    public void setMessage(String message) {
        this.message = message;    }

}

Response pojo.java


package com.vishalsingh.retrofit.Pojo;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Response {

    @SerializedName("Name")
    @Expose    private String name;    @SerializedName("Image")
    @Expose    private String image;    @SerializedName("Gender")
    @Expose    private String gender;    @SerializedName("DateOfBirth")
    @Expose    private String dateOfBirth;    @SerializedName("Address")
    @Expose    private String address;    @SerializedName("Country")
    @Expose    private String country;    @SerializedName("PinCode")
    @Expose    private String pinCode;    @SerializedName("EmailId")
    @Expose    private String emailId;    @SerializedName("MobileNo")
    @Expose    private String mobileNo;    @SerializedName("isPartner")
    @Expose    private String isPartner;    @SerializedName("City")
    @Expose    private String city;    @SerializedName("State")
    @Expose    private String state;    @SerializedName("Booth")
    @Expose    private String booth;    @SerializedName("Constituency")
    @Expose    private String constituency;    @SerializedName("Assembly")
    @Expose    private String assembly;    @SerializedName("Citizenship")
    @Expose    private Object citizenship;
    public String getName() {
        return name;    }

    public void setName(String name) {
        this.name = name;    }

    public String getImage() {
        return image;    }

    public void setImage(String image) {
        this.image = image;    }

    public String getGender() {
        return gender;    }

    public void setGender(String gender) {
        this.gender = gender;    }

    public String getDateOfBirth() {
        return dateOfBirth;    }

    public void setDateOfBirth(String dateOfBirth) {
        this.dateOfBirth = dateOfBirth;    }

    public String getAddress() {
        return address;    }

    public void setAddress(String address) {
        this.address = address;    }

    public String getCountry() {
        return country;    }

    public void setCountry(String country) {
        this.country = country;    }

    public String getPinCode() {
        return pinCode;    }

    public void setPinCode(String pinCode) {
        this.pinCode = pinCode;    }

    public String getEmailId() {
        return emailId;    }

    public void setEmailId(String emailId) {
        this.emailId = emailId;    }

    public String getMobileNo() {
        return mobileNo;    }

    public void setMobileNo(String mobileNo) {
        this.mobileNo = mobileNo;    }

    public String getIsPartner() {
        return isPartner;    }

    public void setIsPartner(String isPartner) {
        this.isPartner = isPartner;    }

    public String getCity() {
        return city;    }

    public void setCity(String city) {
        this.city = city;    }

    public String getState() {
        return state;    }

    public void setState(String state) {
        this.state = state;    }

    public String getBooth() {
        return booth;    }

    public void setBooth(String booth) {
        this.booth = booth;    }

    public String getConstituency() {
        return constituency;    }

    public void setConstituency(String constituency) {
        this.constituency = constituency;    }

    public String getAssembly() {
        return assembly;    }

    public void setAssembly(String assembly) {
        this.assembly = assembly;    }

    public Object getCitizenship() {
        return citizenship;    }

    public void setCitizenship(Object citizenship) {
        this.citizenship = citizenship;    }

}

Apiclient.java
package com.vishalsingh.retrofit;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class APIClient {
    private static Retrofit retrofit = null;
    static Retrofit getClient() {

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();   
     interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);       
 OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();


        retrofit = new Retrofit.Builder()
                .baseUrl("Your base ur")
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();
        


        return retrofit;    }
}
ApiInterface.java
note: name it as new api
package com.vishalsingh.retrofit;
import com.vishalsingh.retrofit.Pojo.Library;
import java.util.List;
import java.util.Map;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;

 interface NewApi {


     @FormUrlEncoded     
     @POST(" Your post method ?")
     Call<Library> doCreateUserWithField(@Field("UserId") String UserId);}


MainActivity.java




package com.vishalsingh.retrofit;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;import android.widget.TextView;
import android.widget.Toast;
import com.vishalsingh.retrofit.Pojo.Library;
import java.util.HashMap;import java.util.List;
import java.util.Map;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class Main2Activity extends AppCompatActivity {
    TextView text1;   
 NewApi apiInterface;
    @Override  
  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);  
      setContentView(R.layout.activity_main2); 
       text1 = (TextView) findViewById(R.id.text1);
        apiInterface = APIClient.getClient().create(NewApi.class);    
    Call<Library> call = apiInterface.doCreateUserWithField("your parameter"); 
       call.enqueue(new Callback<Library>() {
            @Override         
   public void onResponse(Call<Library> call, Response<Library> response) {
                Library userlist = response.body();         
       List<com.vishalsingh.retrofit.Pojo.Response> newrepo = userlist.getResponse();                String name="", address="", email="";                for (int i = 0; i <newrepo.size(); i++) {
                    name = newrepo.get(i).getName();     
               address = newrepo.get(i).getAddress();     
               email = newrepo.get(i).getEmailId();
                }
                text1.setText(name + "\n" + address + "\n" + email);            }

            @Override           
 public void onFailure(Call<Library> call, Throwable t) {
     Toast.makeText(Main2Activity.this, "cannot load data", Toast.LENGTH_SHORT).show();            }
        });    }


}
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"  
  xmlns:app="http://schemas.android.com/apk/res-auto"  
  xmlns:tools="http://schemas.android.com/tools"  
  android:layout_width="match_parent"   
 android:layout_height="match_parent"   
 tools:context=".Main2Activity">
<TextView   
 android:layout_width="match_parent"   
 android:layout_height="wrap_content"  
  android:id="@+id/text1"/>
</android.support.constraint.ConstraintLayout>


Sample json

{
"Status":true,
"Error":
{
"Code":0,
"Message":""
},
"Response":
[{"Name":"Shubham Shrivastava",
"Image":"http://103.115.194.111:906/Readers/uploads/Screenshot_20190424-202039.jpg",
"Gender":"Mr.",
"DateOfBirth":"26 Dec 2018",
"Address":"Noida",
"Country":"INDIA",
"PinCode":"485001",
"EmailId":"shri.shubham86@gmail.com",
"MobileNo":"9074762379",
"isPartner":"No",
"City":"",
"State":"Madhya Pradesh",
"Booth":"Other",
"Constituency":"Satna",
"Assembly":"Satna",
"Citizenship":null}
]
}
Note
In case of problem in pi  create network configuration xml file
and write this code

<?xml version ="1.0" encoding ="utf-8"?>
<network-security-config>  
  <domain-config cleartextTrafficPermitted="true">     
   <domain includeSubdomains="true">Your domain or IP address</domain> 
   </domain-config>
</network-security-config>

Friday, June 14, 2019

Google Signin using firebase

Google Sign-in  is the best method to authenticate a user .You need firebase account to  integrate google sign-in in your project. In the following tutorial i will teach you how to integrate the google sign-in.

1.  Connect firebase to android studio

     In your android studio
     Click on tools---->firebase--->Assistance dialog will open on the right

1.1 Click on Authentication



1.2 Press connect  to firebase




1.3 Press add firebase authentication to app and accept all the changes 
1.4 Open firebase console in browser and enable Google sign-in  from sign-in options



2. Integrating the code

Manifest file
 Add internet permission in manifest file

<uses-permission android:name="android.permission.INTERNET" />


Java file

package com.vishalsingh.practice;
import android.content.Intent;import android.support.annotation.NonNull;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Toast;
import com.google.android.gms.auth.api.Auth;import com.google.android.gms.auth.api.signin.GoogleSignIn;import com.google.android.gms.auth.api.signin.GoogleSignInAccount;import com.google.android.gms.auth.api.signin.GoogleSignInApi;import com.google.android.gms.auth.api.signin.GoogleSignInClient;import com.google.android.gms.auth.api.signin.GoogleSignInOptions;import com.google.android.gms.common.SignInButton;import com.google.android.gms.common.api.ApiException;import com.google.android.gms.common.api.GoogleApiClient;import com.google.android.gms.tasks.OnCompleteListener;import com.google.android.gms.tasks.Task;import com.google.firebase.auth.AuthCredential;import com.google.firebase.auth.AuthResult;import com.google.firebase.auth.FirebaseAuth;import com.google.firebase.auth.FirebaseUser;import com.google.firebase.auth.GoogleAuthProvider;
public class LoginActivity extends AppCompatActivity {
    private FirebaseAuth mAuth;    SignInButton signInButton;    GoogleSignInClient mGoogleSignInClient;    private static final int RC_SIGN_IN = 9001;
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_login);
        mAuth = FirebaseAuth.getInstance();        signInButton = findViewById(R.id.signinbutton);
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();        mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

        signInButton.setOnClickListener(new View.OnClickListener() {
                                            @Override                                            public void onClick(View view) {
                                                signin();                                            }
                                        });

    }

    private void signin() {

        Intent signInIntent = mGoogleSignInClient.getSignInIntent();        startActivityForResult(signInIntent, RC_SIGN_IN);    }

    @Override    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        
        if (requestCode == RC_SIGN_IN) {
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);            try {
                GoogleSignInAccount account = task.getResult(ApiException.class);                firebaseAuthWithGoogle(account);            } catch (ApiException e) {
                /
                Toast.makeText(this,"", Toast.LENGTH_SHORT).show();               
            }
        }
    }

    private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
        //   Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
        AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            
                            FirebaseUser user = mAuth.getCurrentUser();                            Toast.makeText(LoginActivity.this, "user signed in", Toast.LENGTH_SHORT).show();                          
                        } else {
                            Toast.makeText(LoginActivity.this, "login failed", Toast.LENGTH_SHORT).show();                            

                        
                    }
                });    }
    @Override    protected void onStart() {
        super.onStart();
        //if the user is already signed in        //we will close this activity        //and take the user to profile activity        if (mAuth.getCurrentUser() != null) {
            finish();            startActivity(new Intent(this, NavigationActivity.class));        }
    }
}

Xml  file

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".LoginActivity">
    <com.google.android.gms.common.SignInButton        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/signinbutton"
        app:layout_constraintTop_toTopOf="parent"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent">
    </com.google.android.gms.common.SignInButton>


</android.support.constraint.ConstraintLayout>
NOTE:   In case of error make sure the following dependencies are present in build gradle

implementation 'com.google.firebase:firebase-core:16.0.0'implementation 'com.google.firebase:firebase-auth:17.0.0'implementation 'com.google.android.gms:play-services-auth:16.0.1'

Alert Dialog Box

Alert Dialog Box Android AlertDialog   can be used to display the dialog message with OK and Cancel buttons. It can be used to inter...