用一些 headers 获取 POST
Fetch POST with some headers
我想使用 fetch
函数 POST 一些数据。我一直在使用 curl
命令进行测试,目的是找到正确的响应。然后我发现我想要的命令看起来像这样:
curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:basicevent:1#SetBinaryState\"" --data '<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>0</BinaryState></u:SetBinaryState></s:Body></s:Envelope>' -s http://192.168.1.48:49153/upnp/control/basicevent1
我设置的fetch
参数:
fetch('http://192.168.1.48:49153/upnp/control/basicevent1', {
method: 'POST',
headers: {
'Accept' : '',
'Content-type': text/xml; charset="utf-8",
'SOAPACTION': "urn:Belkin:service:basicevent:1#SetBinaryState"
},
body: ('<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>0</BinaryState></u:SetBinaryState></s:Body></s:Envelope>')
})
我不知道问题出在 HTTP 版本还是其他 headers 设置上,但我收到了错误响应。
fetch
api 使用 promises
处理回调结果。
你的情况:
fetch('http://192.168.1.48:49153/upnp/control/basicevent1', {
method: 'POST',
headers: {
'Accept' : '',
'Content-type': 'text/xml; charset="utf-8"',
'SOAPACTION': "urn:Belkin:service:basicevent:1#SetBinaryState"
},
body: ('<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>0</BinaryState></u:SetBinaryState></s:Body></s:Envelope>')
}).catch(function(err) {
// Error :(
});
此外,content-type
应该是 "application/json; charset=utf-8"
。
最后我修改了请求。问题是内容时间和正文中的某些字段。
'Content-type': 'text/xml; charset=utf-8',
我想使用 fetch
函数 POST 一些数据。我一直在使用 curl
命令进行测试,目的是找到正确的响应。然后我发现我想要的命令看起来像这样:
curl -0 -A '' -X POST -H 'Accept: ' -H 'Content-type: text/xml; charset="utf-8"' -H "SOAPACTION: \"urn:Belkin:service:basicevent:1#SetBinaryState\"" --data '<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>0</BinaryState></u:SetBinaryState></s:Body></s:Envelope>' -s http://192.168.1.48:49153/upnp/control/basicevent1
我设置的fetch
参数:
fetch('http://192.168.1.48:49153/upnp/control/basicevent1', {
method: 'POST',
headers: {
'Accept' : '',
'Content-type': text/xml; charset="utf-8",
'SOAPACTION': "urn:Belkin:service:basicevent:1#SetBinaryState"
},
body: ('<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>0</BinaryState></u:SetBinaryState></s:Body></s:Envelope>')
})
我不知道问题出在 HTTP 版本还是其他 headers 设置上,但我收到了错误响应。
fetch
api 使用 promises
处理回调结果。
你的情况:
fetch('http://192.168.1.48:49153/upnp/control/basicevent1', {
method: 'POST',
headers: {
'Accept' : '',
'Content-type': 'text/xml; charset="utf-8"',
'SOAPACTION': "urn:Belkin:service:basicevent:1#SetBinaryState"
},
body: ('<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>0</BinaryState></u:SetBinaryState></s:Body></s:Envelope>')
}).catch(function(err) {
// Error :(
});
此外,content-type
应该是 "application/json; charset=utf-8"
。
最后我修改了请求。问题是内容时间和正文中的某些字段。
'Content-type': 'text/xml; charset=utf-8',