title: sending multipart/mixed request in nodejs
body: <p>I am trying to send multipart/mixed request to azure Direct Batch Send (<a href="https://msdn.microsoft.com/en-us/library/azure/mt734910.aspx" rel="nofollow noreferrer">https://msdn.microsoft.com/en-us/library/azure/mt734910.aspx</a>). I am using npm request module.</p>
  
  <p>What request I want to form :-</p>
  
  <pre><code>POST https://{Namespace}.servicebus.windows.net/{Notification Hub}/messages/$batch?direct&amp;api-version=2015-08 HTTP/1.1
  Content-Type: multipart/mixed; boundary="simple-boundary"
  Authorization: SharedAccessSignature sr=https%3a%2f%2f{Namespace}.servicebus.windows.net%2f{Notification Hub}%2fmessages%2f%24batch%3fdirect%26api-version%3d2015-08&amp;sig={Signature}&amp;skn=DefaultFullSharedAccessSignature
  ServiceBusNotification-Format: gcm
  Host: {Namespace}.servicebus.windows.net
  Content-Length: 431
  Expect: 100-continue
  Connection: Keep-Alive
  
  
  --simple-boundary
  Content-Type: application/json
  Content-Disposition: inline; name=notification
  
  {"data":{"message":"Hello via Direct Batch Send!!!"}}
  --simple-boundary
  Content-Type: application/json
  Content-Disposition: inline; name=devices
  
  ['Device Token1','Device Token2','Device Token3']
  --simple-boundary--
  </code></pre>
  
  <p>What I have tried :-</p>
  
  <p>First Approach :-</p>
  
  <pre><code>Request({
              method: 'POST',
              uri:'https://{namespace}.servicebus.windows.net/{Notification Hub}/messages/$batch?direct&amp;api-version=2015-08',
              headers: {
                  Authorization,
          'Content-Type': 'multipart/mixed; ',
                  'ServiceBusNotification-Format': 'gcm',
                  'x-ms-version': '2015-04'
              },
              multipart: [{
                  'content-type': 'application/json',
                  body: {
                      data:{"message":"Hello via Direct Batch Send!!!"}
                  }
              }, {
                  'content-type': 'application/json',
                  body : handles // This is array
              }]
          }, (err, res, body) =&gt; {
              console.log('res: ', err, res, body)
          }
  </code></pre>
  
  <p>Error :- First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object</p>
  
  <p>Second Approach :- </p>
  
  <pre><code>        var formData = {
              data:{"message":"Hello via Direct Batch Send!!!"},
              devices: handles // This is array
          }
          var options = {
          uri:'https://{namespace}.servicebus.windows.net/{Notificatin Hub}/messages/$batch?direct&amp;api-version=2015-08',
          headers: {
                      Authorization,
              'Content-Type': 'multipart/mixed; ',
                      'ServiceBusNotification-Format': 'gcm',
                      'x-ms-version': '2015-04'
          }
          }
          Request.post({options, formData}, (err, res, body) =&gt; {
              console.log('res: ', err, res, body)
          })
  </code></pre>
  
  <p>Error: options.uri is a required argument</p>
  
  <p>Please suggest me the correct and better approach to send multipart/mixed request to Azure Direct Batch Send Service.
  Thanks you</p>