web-dev-qa-db-ja.com

コンテンツタイプ= 'application / x-www-form-urlencoded'でnode.jsにデータを投稿する方法

Content-type: 'application/x-www-form-urlencoded'を使用してnode.jsにデータを投稿する際に問題が発生しました

var loginArgs = {
    data: 'username="xyzzzzz"&"password="abc12345#"',

    //data: {
    //    'username': "xyzzzzz",
    //    'password': "abc12345#",
    //},

    headers: {
            'User-Agent': 'MYAPI',
            'Accept': 'application/json',
            'Content-Type':'application/x-www-form-urlencoded'      
    }   
};

そして投稿リクエストは:

client.post("http:/url/rest/login", loginArgs, function(data, response){
console.log(loginArgs);

if (response.statusCode == 200) {
    console.log('succesfully logged in, session:', data.msg);
}

常にsername/passwordが正しくありません。

残りのAPIでは、リクエストの本文は次のようになっている必要があります。

username='provide user name in url encoded
format'&password= "provide password in url encoded format'
14
rahul

requestは、application/x-www-form-urlencodedおよびmultipart/form-dataフォームのアップロードをサポートしています。 multipart/relatedについては、マルチパートAPIを参照してください。

application/x-www-form-urlencoded(URLエンコードされたフォーム)

URLエンコードされたフォームは単純です:

const request = require('request');

request.post('http:/url/rest/login', {
  form: {
    username: 'xyzzzzz',
    password: 'abc12345#'
  }
})
// or
request.post('http:/url/rest/login').form({
  username: 'xyzzzzz',
  password: 'abc12345#'
})
// or
request.post({
  url: 'http:/url/rest/login',
  form: {
    username: 'xyzzzzz',
    password: 'abc12345#'
  }
}, function (err, httpResponse, body) { /* ... */ })

参照: https://github.com/request/request#forms

または、request-promiseを使用します

const rp = require('request-promise');
rp.post('http:/url/rest/login', {
  form: {
    username: 'xyzzzzz',
    password: 'abc12345#'
  }
}).then(...);

参照: https://github.com/request/request-promise#api-in-detail

18
Eduardo Cuomo