Unicode C++ AWIS: Get Alexa Traffic Data for a Website

Back to Index

Get Amazon Alexa information about a website.

Documentation: https://docs.aws.amazon.com/AlexaWebInfoService/latest/ApiReference_UrlInfoAction.html


#include <CkRestW.h>
#include <CkAuthAwsW.h>
#include <CkStringBuilderW.h>
#include <CkXmlW.h>

void ChilkatSample(void)
    {
    CkRestW rest;
    bool success;

    //   Provide AWS credentials for the REST call.
    CkAuthAwsW authAws;
    authAws.put_AccessKey(L"AWS_ACCESS_KEY");
    authAws.put_SecretKey(L"AWS_SECRET_KEY");
    authAws.put_ServiceName(L"awis");
    authAws.put_Region(L"us-west-1");
    rest.SetAuthAws(authAws);

    success = rest.Connect(L"awis.us-west-1.amazonaws.com",443,true,true);
    if (success != true) {
        wprintf(L"%s\n",rest.lastErrorText());
        return;
    }

    rest.AddQueryParam(L"Action",L"UrlInfo");
    rest.AddQueryParam(L"ResponseGroup",L"Rank");
    rest.AddQueryParam(L"Url",L"yahoo.com");

    CkStringBuilderW sbXml;
    success = rest.FullRequestNoBodySb(L"GET",L"/api",sbXml);
    if (success != true) {
        wprintf(L"%s\n",rest.lastErrorText());
        return;
    }

    if (rest.get_ResponseStatusCode() != 200) {
        wprintf(L"Received error response code: %d\n",rest.get_ResponseStatusCode());
        wprintf(L"Response body:\n");
        wprintf(L"%s\n",sbXml.getAsString());
        return;
    }

    CkXmlW xml;
    xml.LoadSb(sbXml,true);

    //  The following code parses the XML response.
    //  A sample XML response is shown below the sample code.
    const wchar_t *aws_UrlInfoResponse_xmlns_aws = 0;
    const wchar_t *aws_Response_xmlns_aws = 0;
    const wchar_t *tagPath = 0;
    const wchar_t *aws_RequestId = 0;
    int i;
    int count_i;
    const wchar_t *aws_Name = 0;
    const wchar_t *aws_Value = 0;
    const wchar_t *aws_DataUrl_type = 0;
    const wchar_t *aws_DataUrl = 0;
    int aws_Rank;
    const wchar_t *aws_ResponseStatus_xmlns_aws = 0;
    const wchar_t *aws_StatusCode = 0;

    aws_UrlInfoResponse_xmlns_aws = xml.getAttrValue(L"xmlns:aws");
    aws_Response_xmlns_aws = xml.chilkatPath(L"aws:Response|(xmlns:aws)");
    aws_RequestId = xml.getChildContent(L"aws:Response|aws:OperationRequest|aws:RequestId");
    i = 0;
    count_i = xml.NumChildrenHavingTag(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:Request|aws:Arguments|aws:Argument");
    while (i < count_i) {
        xml.put_I(i);
        aws_Name = xml.getChildContent(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:Request|aws:Arguments|aws:Argument[i]|aws:Name");
        aws_Value = xml.getChildContent(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:Request|aws:Arguments|aws:Argument[i]|aws:Value");
        i = i + 1;
    }

    aws_DataUrl_type = xml.chilkatPath(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:TrafficData|aws:DataUrl|(type)");
    aws_DataUrl = xml.getChildContent(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:TrafficData|aws:DataUrl");
    aws_Rank = xml.GetChildIntValue(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:TrafficData|aws:Rank");
    aws_ResponseStatus_xmlns_aws = xml.chilkatPath(L"aws:Response|aws:ResponseStatus|(xmlns:aws)");
    aws_StatusCode = xml.getChildContent(L"aws:Response|aws:ResponseStatus|aws:StatusCode");

    wprintf(L"Example Completed.\n");
    }

Sample XML Response Body

<?xml version="1.0" encoding="utf-8" ?>
<aws:UrlInfoResponse xmlns:aws="http://awis.amazonaws.com/doc/2005-10-05">
    <aws:Response xmlns:aws="http://awis.amazonaws.com/doc/2005-07-11">
        <aws:OperationRequest>
            <aws:RequestId>7688d02e-2247-11e8-9c21-d97222e4a948</aws:RequestId>
        </aws:OperationRequest>
        <aws:UrlInfoResult>
            <aws:Alexa>
                <aws:Request>
                    <aws:Arguments>
                        <aws:Argument>
                            <aws:Name>url</aws:Name>
                            <aws:Value>yahoo.com</aws:Value>
                        </aws:Argument>
                        <aws:Argument>
                            <aws:Name>responsegroup</aws:Name>
                            <aws:Value>Rank</aws:Value>
                        </aws:Argument>
                    </aws:Arguments>
                </aws:Request>
                <aws:TrafficData>
                    <aws:DataUrl type="canonical">yahoo.com/</aws:DataUrl>
                    <aws:Rank>7</aws:Rank>
                </aws:TrafficData>
            </aws:Alexa>
        </aws:UrlInfoResult>
        <aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/">
            <aws:StatusCode>Success</aws:StatusCode>
        </aws:ResponseStatus>
    </aws:Response>
</aws:UrlInfoResponse>