Calling Postcode webservice from www.webservices.nl using from JavaScript

 

See here my implementation for calling both the national address and the international postcode webservice from www.webservices.nl.

 

    When multiple addresses need to be resolved, this is the dialog that should come up.

 

 

 

 

Webservice JavaScript

 

var CONTACT_ADDRESS_1 = 10;

var CONTACT_ADDRESS_2 = 11;

var CONTACT_ADDRESS_3 = 12;

var ACCOUNT_ADDRESS_1 = 20;

var ACCOUNT_ADDRESS_2 = 21;

var ACCOUNT_ADDRESS_3 = 22;

 

var ORGANISATION_NAME = “CRMORGANISATION”;

var SERVER_URL = “http://crm.dev.intra/”;

 

// —————————————–

// Validate Address with webservices.nl

// —————————————–

 

function AddressWebservice(i_Land, i_Postcode, i_Huisnummer, i_Toevoeging, i_Straat, i_Plaats, FORM_ADRES) {

/*

Examples for calling the webservice

https://ws1.webservices.nl/rpc/get-simplexml/UTF-8/addressReeksFullParameterSearch/WebService_User/****************/////93//2991/KK//

https://ws1.webservices.nl/rpc/get-simplexml/UTF-8/internationalAddressSearchV2/WebService_User/***********************///unter%20den%20eichen/1//wiesbaden///de//

*/

// Pre-checks

    this._debug = false;

    

    if (this._debug) {

        debugger;

    }

 

    // For dutch addrress postocde and huisnummer is required.

    // For international adresses al least 3 out of 4, when postcode is not filled

    if (i_Land == ‘NETHERLANDS’ || _IsNull(i_Land)) {

        if (_IsNull(i_Postcode) || _IsNull(i_Huisnummer)) { return true; }

    }

    else {

        if ((_IsNull(i_Postcode)) && (_IsNull(i_Straat))) {

            return true; }

        else {

            if ((_IsNull(i_Huisnummer)) && (_IsNull(i_Plaats))) {

                return true;

            }

        }

    }

    
 

// Set the credentials to successfully logon to the webservice

this._auth_username = ‘Webservice_User’;

this._auth_password = ‘*********************’;

    

/*

Interface for addressReeksFullParameterSearch method

*/

this._N6L_province = ”; // string

this._N6L_district = ”; // string

this._N6L_city = ”;                 //i_Plaats; // string

this._N6L_street = ”;                 //i_Straat; // string

this._N6L_houseNo = i_Huisnummer // int

this._N6L_houseNoAddition = i_Toevoeging; // string

this._N6L_nbcode = Left(i_Postcode.toUpperCase(),4); // string

this._N6L_lettercombination = Right(i_Postcode.toUpperCase(), 2); // string

this._N6L_addresstype = ”; // string

this._N6L_page = ”; // int

/*

Interface for the internationalAddressSearchV2 method

*/

this._I11L_organization = ”; // string

this._I11L_building = ”; // string

this._I11L_street = i_Straat; // string

this._I11L_housenr = i_Huisnummer + i_Toevoeging; // string

this._I11L_pobox = ”; // string

this._I11L_locality = i_Plaats; // string

this._I11L_postcode = i_Postcode.toUpperCase(); // string

this._I11L_province = ”; // string

this._I11L_country = i_Land // string

this._I11L_language = ‘NL’; // string

this._I11L_country_format = ‘iso_2’ // string

 

var _baseurl = ‘https://ws1.webservices.nl/rpc/get-simplexml/UTF-8’;

var _webmethod_international = ‘internationalAddressSearchV2’;

var _webmethod_national = ‘addressReeksFullParameterSearch’;

var _webservicecall = ”;

    this.items = new Array();

 

// Check address for the Netherlands

if (i_Land == ‘NETHERLANDS’ || _IsNull(i_Land)) {

        _webservicecall = _baseurl + ‘/’ + _webmethod_national + ‘/’ + this._auth_username + ‘/’ + this._auth_password + ‘/’ +

this._N6L_province + ‘/’ + this._N6L_district + ‘/’ + this._N6L_city + ‘/’ + this._N6L_street + ‘/’ + this._N6L_houseNo + ‘/’ +

this._N6L_houseNoAddition + ‘/’ + this._N6L_nbcode + ‘/’ + this._N6L_lettercombination + ‘/’ + this._N6L_addresstype + ‘/’ + this._N6L_page;

 

}

else {

_webservicecall = _baseurl + ‘/’ + _webmethod_international + ‘/’ + this._auth_username + ‘/’ + this._auth_password + ‘/’ +

this._I11L_organization + ‘/’ + this._I11L_building + ‘/’ + this._I11L_street + ‘/’ + this._I11L_housenr + ‘/’ +

this._I11L_pobox + ‘/’ + this._I11L_locality + ‘/’ + this._I11L_postcode + ‘/’ + this._I11L_province + ‘/’ +

this._I11L_country + ‘/’ + this._I11L_language + ‘/’ + this._I11L_country_format;

}

    

    var xmlhttp = GetXmlHttp();

if (xmlhttp) {

        xmlhttp.open(“POST”, _webservicecall, true);

        xmlhttp.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”);

        

        try

        {

            xmlhttp.send(_webservicecall);

        }

        catch(ex)

        {

            alert(ex);

            //succesFullTransformation = false;

        }

        

        xmlhttp.onreadystatechange = function()

        {

            if(xmlhttp.readyState==4 && xmlhttp.responseXML)

            {

                var response = xmlhttp.responseXML;

            

                //var errorCode = response.documentElement.selectSingleNode(“ErrorCode”);

                //var errorMessage = response.documentElement.selectSingleNode(“ErrorMessage”);

                

                if (this._debug) {

                    debugger;

                }

                

                if (response == null || response.documentElement == null) {

                    var _msg = “Fout bij het ophalen van de postcde.\nControleer of de volgende combinatie een juist adres kan opleveren: \n”;

                    _msg += ((_IsNull(i_Land))?””:”Land: ” + i_Land + “,\n”);

                    _msg += ((_IsNull(i_Postcode))?””:”Postcode: ” + i_Postcode + “,\n”);

                    _msg += ((_IsNull(i_Huisnummer))?””:”Huisnummer: ” + i_Huisnummer + “,\n”);

                    _msg += ((_IsNull(i_Toevoeging))?””:”Toevoeging: ” + i_Toevoeging + “,\n”);

                    _msg += ((_IsNull(i_Straat))?””:”Straat: ” + i_Straat + “,\n”);

                    _msg += ((_IsNull(i_Plaats))?””:”Plaats: ” + i_Plaats);

                    alert(_msg);

                    return null;                     

                }

                else {

                    if (i_Land == ‘NETHERLANDS’ || _IsNull(i_Land)) {

                        this.items = NationalAddresObject(response); }

                    else {

                        this.items = InternationalAddresObject(response); }

                    }

                

                SetAddressFields(FORM_ADRES, this.items);

            }

        }

    }

}

 

function InternationalAddresObject(xmlResponse) {

    //alert(‘Under Construction’);

    

    var _resultcount = xmlResponse.documentElement.selectSingleNode(“/response/result”).childNodes.length;

    this.items = new Array();

    

    // adresregel 1, huisnummer, toevoeging, adresregel 2, adresregel 3, plaats, postcode, provincie, land

 

    switch(_resultcount)

    {

        case 0 :

            alert(‘Ongeldig huisnummer en postcode combinatie voor een buitenlands adres. Voer een geldig huisnummer en postcode combinatie in.’ );

            break;

        case 1 :

            this.items[0] = xmlResponse.documentElement.selectSingleNode(“/response/result/entry/address/street”).text;

            this.items[1] = xmlResponse.documentElement.selectSingleNode(“/response/result/entry/address/housenr”).text;

            this.items[2] = ”;

            this.items[3] = ”;

            this.items[4] = xmlResponse.documentElement.selectSingleNode(“/response/result/entry/address/province”).text;

            this.items[5] = xmlResponse.documentElement.selectSingleNode(“/response/result/entry/address/locality”).text;

            this.items[6] = xmlResponse.documentElement.selectSingleNode(“/response/result/entry/address/postcode”).text;

            this.items[7] = xmlResponse.documentElement.selectSingleNode(“/response/result/entry/address/province”).text;

            this.items[8] = xmlResponse.documentElement.selectSingleNode(“/response/result/entry/address/country”).text;

            break;

        default :

            //if (_resultcount == 20) {

                //alert(‘Er zijn 20 adressen of meer gevonden voor deze dit huisnummer en postcode combinatie.’);

                var arrAddresses = new Array();

                

                var _results = xmlResponse.selectNodes(‘/response/result/entry/address’);

                for (i=0; i<_resultcount; i++)

                {

                    arrAddresses[i] = _results[i].getElementsByTagName(‘street’)[0].text + ” ” +

                                     _results[i].getElementsByTagName(‘housenr’)[0].text + ” ” +

                                     _results[i].getElementsByTagName(‘countryspecific_locality’)[0].text + ” (” +

                                     _results[i].getElementsByTagName(‘province’)[0].text + “) ” +

                                     _results[i].getElementsByTagName(‘country’)[0].text

                }

 

                var props = ‘dialogHeight:400px;dialogWidth:730px;center:yes;resizable:no;status:no;scroll:no’;

                retval = null;

                retval = window.showModalDialog(‘/_static/_common/scripts/qnh/addresslist.html’, arrAddresses, props);

 

                if (this._debug) {

                    debugger;

                }    

                    

                if (retval != null) {

                

                    this.items[0] = xmlResponse.getElementsByTagName(‘result’)(0).getElementsByTagName(‘entry’)(retval).getElementsByTagName(‘address’)(0).getElementsByTagName(‘street’)(0).text

                    this.items[1] = xmlResponse.getElementsByTagName(‘result’)(0).getElementsByTagName(‘entry’)(retval).getElementsByTagName(‘address’)(0).getElementsByTagName(‘housenr’)(0).text

                    this.items[2] = ”;

                    this.items[3] = xmlResponse.getElementsByTagName(‘result’)(0).getElementsByTagName(‘entry’)(retval).getElementsByTagName(‘address’)(0).getElementsByTagName(‘province’)(0).text;

                    this.items[4] = ”;

                    this.items[5] = xmlResponse.getElementsByTagName(‘result’)(0).getElementsByTagName(‘entry’)(retval).getElementsByTagName(‘address’)(0).getElementsByTagName(‘locality’)(0).text

                    this.items[6] = xmlResponse.getElementsByTagName(‘result’)(0).getElementsByTagName(‘entry’)(retval).getElementsByTagName(‘address’)(0).getElementsByTagName(‘postcode’)(0).text

                    this.items[7] = xmlResponse.getElementsByTagName(‘result’)(0).getElementsByTagName(‘entry’)(retval).getElementsByTagName(‘address’)(0).getElementsByTagName(‘province’)(0).text

                    this.items[8] = xmlResponse.getElementsByTagName(‘result’)(0).getElementsByTagName(‘entry’)(retval).getElementsByTagName(‘address’)(0).getElementsByTagName(‘country’)(0).text

                    

                }

                break;

    }

    

    if (this._debug) {

        debugger;

    }

    

    return this.items;

}

 

function NationalAddresObject(xmlResponse) {

    //alert(xmlResponse.xml);

    var _resultcount = xmlResponse.documentElement.selectSingleNode(“/response/results”).childNodes.length;

    this.items = new Array();

    

    switch(_resultcount)

    {

        case 0 :

            alert(‘Ongeldig huisnummer en postcode combinatie voor een adres in Nederland. Voer een geldig huisnummer en postcode combinatie in.’ );

            break;

        case 1 :

            this.items[0] = xmlResponse.documentElement.selectSingleNode(“/response/results/entry/straatnaam”).text;

            this.items[1] = ”;

            this.items[2] = ”;

            this.items[3] = ”;

            this.items[4] = ”;

            this.items[5] = xmlResponse.documentElement.selectSingleNode(“/response/results/entry/plaatsnaam”).text;

            this.items[6] = xmlResponse.documentElement.selectSingleNode(“/response/results/entry/wijkcode”).text +

                            xmlResponse.documentElement.selectSingleNode(“/response/results/entry/lettercombinatie”).text;

            this.items[7] = xmlResponse.documentElement.selectSingleNode(“/response/results/entry/provincienaam”).text;

            this.items[8] = ”;

            break;

        default :

            alert(‘Er zijn meer adressen gevonden voor deze dit huisnummer en postcode combinatie’);

            break;

    }

    

    return this.items;

    

}

 

function SetAddressFields(i_Address, arrAddress) {

 

    // fill the form fields with

}

 

//——————–

// Common scripts

//——————–

function _IsNull( value ) {

return ( “undefined” == typeof( value ) || “unknown” == typeof( value ) || null == value || ”==value );

}

 

function xreplace(checkMe,toberep,repwith){

    var temp = checkMe;

    var i = temp.indexOf(toberep);

 

    while(i > -1)

    {

        temp = temp.replace(toberep, repwith);

        i = temp.indexOf(toberep, i + repwith.length + 1);

    }

    return temp;

}

 

function Left(str, n){

    if (n <= 0)

        return “”;

    else if (n > String(str).length)

        return str;

    else

        return String(str).substring(0,n);

}

 

function Right(str, n){

if (n <= 0)

return “”;

else if (n > String(str).length)

return str;

else {

var iLen = String(str).length;

return String(str).substring(iLen, iLen – n);

}

}

 

function GetXmlHttp() {

 

    var x = null;

    try

    {

        x = new ActiveXObject(“Msxml2.XMLHTTP”);

    }

    catch (e)

    {

        try

        {

            x = new ActiveXObject(“Microsoft.XMLHTTP”);

        }

        catch (e)

        {

            x = null;

        }

    }

 

    if (!x && typeof XMLHttpRequest != “undefined”)

    {

        x = new XMLHttpRequest();

    }

 

    return x;

}

2. AddressList.html

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;

<HTML>

    <HEAD>

        <title>Selecteer een adres</title>

        <meta content=”Microsoft Visual Studio 7.0″ name=”GENERATOR”>

        <meta content=”C#” name=”CODE_LANGUAGE”>

        <meta content=”JavaScript” name=”vs_defaultClientScript”>

        <meta content=”http://schemas.microsoft.com/intellisense/ie5&#8243; name=”vs_targetSchema”>

        <link href=”address.css” rel=”stylesheet” type=”text/css”>

    </HEAD>

    <body MS_POSITIONING=”GridLayout” onload=”init()”>

        <script language=”javascript”>

        function init()

        {

         //debugger;

         var arrList;

            var i;

            

            arrList = window.dialogArguments;

            

            var lb = document.getElementById(‘AddressSelector’);

            for (i=0;i<arrList.length;i++)

            {

                lb[lb.options.length] = new Option( arrList[i], 0);

            }

        }

        

        function closeme(val)

        {

            var SelText;

            var ret;

            var arrTokens;

            

            if (val == true)

            {

                var lb = document.getElementById(‘AddressSelector’);

                

                if(lb.selectedIndex >= 0)

                {                    

                    ret = lb.selectedIndex;

                }

                else

                {

                    ret = null;

                }

            }

            else

            {

                ret = null;

            }

            window.returnValue = ret;

            window.close();

        }

        </script>

        <form id=”crmForm” name=”crmForm” class=”crm” method=”post” runat=”server”>

            <table cellspacing=”0″ cellpadding=”0″ border=”0″ width=”100%” height=”100%”>

                <TBODY>

                    <tr height=”48″>

                        <td>

                            <table cellspacing=”0″ cellpadding=”0″ class=”mnubar” id=”mnuBar1″>

                                <tr>

                                    <td id=”tdTitle” class=”mnuTitle mnuRight” noWrap>Zoek een adres</td>

                                </tr>

                            </table>

                            <div style=”BORDER-TOP:#a8aeb5 1px solid; BORDER-BOTTOM:#ffffff 1px solid”></div>

                            <table cellspacing=”0″ cellpadding=”0″ class=”mnubar” id=”mnuBar2″>

                                <tr>

                                    <td id=”tdTitle” class=”mnuTitle mnuRight” noWrap></td>

                                </tr>

                            </table>

                            <div style=”BORDER-TOP:#a8aeb5 1px solid; BORDER-BOTTOM:#000000 1px solid”></div>

                        </td>

                    </tr>

                    <tr>

                        <td style=”PADDING-RIGHT:10px; PADDING-LEFT:10px; PADDING-BOTTOM:10px; PADDING-TOP:10px”>

                            <table width=”100%” height=”100%” cellspacing=”0″ cellpadding=”0″>

                                <tr>

                                    <td height=”15″></td>

                                </tr>

                                <tr>

                                    <td>

                                        <div class=”tab” style=”DISPLAY:inline”>

                                            <asp:Label id=”Label1″ style=”Z-INDEX: 101; LEFT: 10px; POSITION: absolute; TOP: 9px” runat=”server”>Selecteer een adres:</asp:Label>

                                            <SELECT id=”AddressSelector” style=”Z-INDEX: 104; LEFT: 11px; WIDTH: 688px; POSITION: absolute; TOP: 32px; HEIGHT: 168px”

                                                size=”10″ ondblclick=”closeme(true)” class=”INPUT”>

                                            </SELECT>

                                            <INPUT style=”Z-INDEX: 102; LEFT: 528px; WIDTH: 68px; POSITION: absolute; TOP: 208px; HEIGHT: 24px”

                                                type=”button” value=”OK” name=”btnOK” onclick=”closeme(true)”> <INPUT style=”Z-INDEX: 103; LEFT: 616px; WIDTH: 72px; POSITION: absolute; TOP: 208px; HEIGHT: 24px”

                                                type=”button” value=”Cancel” name=”btnCancel” onclick=”closeme(false)”>

                                        </div>

                                    </td>

                                </tr>

                            </table>

                        </td>

                    </tr>

                    <tr height=”23″>

                        <td class=”statusbar” colspan=”2″></td>

                    </tr>

                </TBODY>

            </table>

        </form>

    </body>

</HTML>

3.Address.css

formButton

{

background-color: #6699cc;

padding: 2px 4px 3px 4px;

color: #000000;

font-size: 8pt;

font-family: tahoma;

height: 17px;

filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,

StartColorStr=#B4C5DF, EndColorStr=#91A9D0);

border-width: 0px;

}

 

TEXTAREA

{

font-size: 8pt;

font-family: tahoma;

width: 100%;

height: 100%;

border: 1px solid #7b9ebd;

 

}

 

.inputfields

{

font-size: 8pt;

font-family: tahoma;

width: 100%;

height: 19px;

border: 1px solid #7b9ebd;

}

 

INPUT.rad

{

width: 15px;

border: 0px;

cursor: hand;

}

 

DIV.tab

{

    overflow-y:            auto;

    padding: 10px;

}

 

TD.sec

{

    width:                100%;

    color:                #000000;

    font-weight:        bold;

    padding-left:        0px;

    padding-bottom:        2px;

    text-overflow:        ellipsis;

    overflow:            hidden;

}

 

TD

{

font-size: 11pt;

font-family: tahoma;

}

 

TD.bar

{

    border-bottom:        1px solid #000000;

}

 

 

TD.req

{

    font-weight:        bold;

    color:                #9F2409;    

    overflow:            hidden;

    text-overflow:        ellipsis;    

    padding-top:        5px;

}

 

TD.statusBar

{

    background-color:    #63769B;

    color:                #ffffff;

    padding-left:        5px;

    height:                24px;

    border-bottom:        1px solid #485673;

    font-weight:        bold;

}

 

 

LABEL

{

cursor: hand;

}

 

TD.radioLabel

{

padding-left: 2px;

padding-right: 10px;

}

 

TABLE.layout

{

table-layout: fixed;

width: 100%;

height: 100%;

}

 

div.tab

{

width: 100%;

height: 100%;

border: 1px solid #466094;

background-color: #EEF0F6;

display: none;

}

 

body

{

    font-size: 11px;

    margin:    0px;

    border: 0px;

    background-color: #acc0e9;

    cursor: default;

}

 

td

{

font-size: 11px;

}

 

table

{

cursor: default;

}

 

a

{

    color: #0000ff;

    font-weight: bold;

}

 

span.menu

{

height: 100%;

padding: 2px;

padding-left: 5px;

padding-right: 5px;

border: 1px solid #7288AC;

}

 

table.mnuBar

{

    color: #000000;

    height: 22px;

    width: 100%;

    filter:    progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#DCDFE5, EndColorStr=#BDC2CB);

}

 

td.mnuTitle

{

font-size: 11px;

font-weight: bold;

letter-spacing: 1px;

cursor: default;

color: #000000;

}

 

td.mnuRight

{

width: 100%;

text-align: right;

padding-right: 5px;

}

 

INPUT

{

font-size:        8pt;

width:            100%;

height:            19px;

border:            1px solid #7b9ebd;

}

Advertisements

One thought on “Calling Postcode webservice from www.webservices.nl using from JavaScript

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s