Sample code for 30+ languages & platforms
Dart

SQS Receive Message

See more Amazon SQS Examples

Retrieves one or more messages from an Amazon SQS queue, with a maximum limit of 10 messages, from the specified queue.

See SQS ReceiveMessage or detailed information.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final rest = CkRest();

  // Connect to the Amazon AWS REST server.
  // such as https://sqs.us-west-2.amazonaws.com/
  final bTls = true;
  final port = 443;
  final bAutoReconnect = true;
  rest.connect('sqs.us-west-2.amazonaws.com', port, bTls, bAutoReconnect);

  // Provide AWS credentials for the REST call.
  final authAws = CkAuthAws();
  authAws.accessKey = 'AWS_ACCESS_KEY';
  authAws.secretKey = 'AWS_SECRET_KEY';
  // the region should match our URL above..
  authAws.region = 'us-west-2';
  authAws.serviceName = 'sqs';

  rest.setAuthAws(authAws);

  rest.addQueryParam('Action', 'ReceiveMessage');
  rest.addQueryParam('MaxNumberOfMessages', '5');
  rest.addQueryParam('VisibilityTimeout', '15');
  rest.addQueryParam('AttributeName', 'All');
  rest.addQueryParam('MessageAttributeName', 'All');

  // Use the actual path part of your SQS queue URL here:
  final String responseXml;
  try {
    responseXml = rest.fullRequestNoBody('GET', '/123456789123/chilkatTest');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // A successful response will have a status code equal to 200.
  if (rest.responseStatusCode != 200) {
    print('response status code = ${rest.responseStatusCode}');
    print('response status text = ${rest.responseStatusText}');
    print('response header: ${rest.responseHeader}');
    print('response body: $responseXml');
    return;
  }

  // Examine the successful XML response.
  final xml = CkXml();
  xml.loadXml(responseXml);
  print(xml.getXml());
  print('----');

  // A successful response looks like this:
  // <?xml version="1.0" encoding="utf-8" ?>
  // <ReceiveMessageResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/">
  //     <ReceiveMessageResult>
  //         <Message>
  //             <Body>this is a test</Body>
  //             <MD5OfBody>54b0c58c7ce9f2a8b551351102ee0938</MD5OfBody>
  //             <ReceiptHandle>AQEBMyLof...UbKBTvHtEg==</ReceiptHandle>
  //             <Attribute>
  //                 <Name>SenderId</Name>
  //                 <Value>957491831129</Value>
  //             </Attribute>
  //             <Attribute>
  //                 <Name>ApproximateFirstReceiveTimestamp</Name>
  //                 <Value>1475013283557</Value>
  //             </Attribute>
  //             <Attribute>
  //                 <Name>ApproximateReceiveCount</Name>
  //                 <Value>4</Value>
  //             </Attribute>
  //             <Attribute>
  //                 <Name>SentTimestamp</Name>
  //                 <Value>1475013283557</Value>
  //             </Attribute>
  //             <MessageId>52882c65-5e21-4450-9024-93a3b01e61d3</MessageId>
  //             <MD5OfMessageAttributes>2ff68603f4239272bd03f543254ed040</MD5OfMessageAttributes>
  //         </Message>
  //     </ReceiveMessageResult>
  //     <ResponseMetadata>
  //         <RequestId>05ba5c92-80ee-5f87-be76-0cf67b7475d6</RequestId>
  //     </ResponseMetadata>
  // </ReceiveMessageResponse>

  // Get some values from the XML:
  print('Body: ${xml.chilkatPath('ReceiveMessageResult|Message|Body|*')}');
  print('MessageId: ${xml.chilkatPath('ReceiveMessageResult|Message|MessageId|*')}');

  final unused = xml.chilkatPath('ReceiveMessageResult|Message[0]|Attribute|\$');

  var rec = xml.findNextRecord('Name', 'SenderId');
  print('SenderId: ${rec.getChildContent('Value')}');

  rec = xml.findNextRecord('Name', 'ApproximateFirstReceiveTimestamp');
  print('ApproximateFirstReceiveTimestamp: ${rec.getChildContent('Value')}');

  rec = xml.findNextRecord('Name', 'ApproximateReceiveCount');
  print('ApproximateReceiveCount: ${rec.getChildContent('Value')}');

  rec = xml.findNextRecord('Name', 'SentTimestamp');
  print('SentTimestamp: ${rec.getChildContent('Value')}');

  xml.getRoot2();
}