2017-02-15 9 views
1

Ich bin der Knotenmodul ‚request‘ mit einer POST-Anforderung zu machen, und auch nach vielen verschiedenen Variationen von Inhaltstypen versuchen, zB:NodeJS ‚request‘ Modul: HTTP POST liefert 415

'content-type': 'application/json' 

Ich bin immer noch eine Antwort 415 (nicht unterstützter Medientyp) erhalten. Unten ist meine Funktion:

var createNetworkResource = function (resourceName, inputDirectory) { 
     request.post({url:browser.params.baseRestUrl + 'resources/connections', auth: browser.params.auth, 
       form: {method:'POST', headers: {'content-type': 'application/json'}, 
         displayName: "RESOURCE_TEST", name: "RESOURCE_TEST", type: "NETWORK", 
     }}, 
      function(e,r,user){ console.log("Status code of createNetworkResource('" + resourceName + "'): " + r.statusCode);}); 
    }; 

ich verschiedene Lösungen von Stackoverflow, aber keiner von ihnen versucht haben, arbeiten und ich konnte nicht ein spezifisch für diesen Knotenmodul finden.

Antwort

1

Die form-Eigenschaft in request setzt den Inhaltstyp auf application/x-www-form-urlencoded.

Mit json: true und Angabe eines body: {} wird ein Content-type: application/json Header hinzugefügt und die Anforderung in eine JSON-Zeichenfolge konvertiert.

function createNetworkResource (resourceName, inputDirectory) { 
    request.post({ 
     url: browser.params.baseRestUrl + 'resources/connections', 
     auth: browser.params.auth, 
     json: true, 
     body: { 
     displayName: "RESOURCE_TEST", 
     name: "RESOURCE_TEST", 
     type: "NETWORK" 
     } 
    }, 
    function(error, response, user){ 
     if (error) return console.error('error(%s):', resourceName, error) 
     console.log("Status code of createNetworkResource(%s): %s", resourceName, response.statusCode) 
    } 
); 
}; 
+0

Ihr Vorschlag ist korrekt, ich musste ein "body" -Parameterbeispiel kopieren und einfügen, um es zur Arbeit zu bringen (ich denke, dass ich einige obligatorische Parameter vermisste). – Tom