Preciso enviar uma variável (ou um arquivo em xml). Já tentei de tudo. Uso o js2xml para criar a variável. Estou tentando enviar pelo Axios.
var options = { compact: true, ignoreComment: false, spaces: 4 };
var agoravai = convert.js2xml(dadosProduto, options)
const headerBling = {
headers: {
'Accept': "application/xml ",
'Content-Type': 'Content-Type: text/xml',
'x-api-key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
},
};
este código cria a variável abaixo:
<produtosLoja>
<produtoLoja>
<idLojaVirtual>47986</idLojaVirtual>
<preco>
<preco>9.38</preco>
<precoPromocional>8.34</precoPromocional>
</preco>
</produtoLoja>
</produtosLoja>
esta é a url:
var urlPost = https://bling.com.br/Api/v2/produtoLoja/${produto.idLojaVirtual}/${produto.produtoid}/json/&apikey=${process.env.APIKEY}
Tive de criar um objeto abaixo para dar entrada com os parâmetros na função
let vamosVer = {
urlPost: urlPost,
agoravai: agoravai,
headerBling: headerBling
}
eu envio por este código com Axios: Não ligue para os nomes das variáveis. São temporários. Tentei tanta coisa que já fiquei sem criatividade.
axios.put(vamosVer.urlPost, vamosVer.agoravai, vamosVer.headerBling)
.then((response) => { response.data })
.catch((err) => { console.log(err) })
obtenho a mensagem de erro abaixo.
[AxiosError: Request failed with status code 400] {
code: 'ERR_BAD_REQUEST',
config: {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
adapter: [Function: httpAdapter],
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: { FormData: [Function] },
validateStatus: [Function: validateStatus],
headers: {
Accept: 'application/xml ',
'Content-Type': 'Content-Type: text/xml',
'x-api-key': '792ad75c36751ede5e23fc8da919b5f4edc0962dcb8811166d4a70fe9c7323033bd65e15',
'User-Agent': 'axios/0.27.2',
'Content-Length': 231
},
method: 'put',
url: 'https://bling.com.br/Api/v2/produtoLoja/203975574/17898994187620/json/&apikey=792ad75c36751ede5e23fc8da919b5f4edc0962dcb8811166d4a70fe9c7323033bd65e15',
data: '<produtosLoja>\n' +
' <produtoLoja>\n' +
' <idLojaVirtual>47986</idLojaVirtual>\n' +
' <preco>\n' +
' <preco>9.38</preco>\n' +
' <precoPromocional>8.34</precoPromocional>\n' +
' </preco>\n' +
' </produtoLoja>\n' +
'</produtosLoja>'
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype] {
abort: [Function (anonymous)],
aborted: [Function (anonymous)],
connect: [Function (anonymous)],
error: [Function (anonymous)],
socket: [Function (anonymous)],
timeout: [Function (anonymous)],
prefinish: [Function: requestOnPrefinish]
},
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: false,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
secureConnecting: false,
_SNICallback: null,
servername: 'bling.com.br',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 10,
connecting: false,
_hadError: false,
_parent: null,
_host: 'bling.com.br',
_readableState: [ReadableState],
_maxListeners: undefined,
_writableState: [WritableState],
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: [TLSWrap],
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
tem mais abaixo mas excedeu o tamanho. Acho que dá para entender com a resposta acima.