在node.js中发送带有XML数据的POST请求:错误400,“客户端发送的请求在语法上不正确”

AF7

我正在尝试使用node.js重现Python POST请求(已验证工作)。这是一个非常简单的POST请求,用于发送和接收XML数据。

但是,The request sent by the client was syntactically incorrect尽管我的XML有效(已验证)并且直接取自Python示例,但我还是遇到了错误。我究竟做错了什么?

我的代码(可复制):

// DOC:
// https://wiki.solargis.com/display/public/WS+API+technical+documentation#WSAPItechnicaldocumentation-DatadeliveryWebservice(APIforgettingtimeseriesdata)
// https://nodejs.org/api/http.html#http_http_request_options_callback
// https://nodejs.org/api/http.html#http_request_write_chunk_encoding_callback
// https://nodejs.org/api/https.html

let https = require('https');

const api_key = 'demo';

var request = '<?xml version="1.0" encoding="UTF-8"?>' +
'<ws:dataDeliveryRequest dateFrom="2014-04-28" dateTo="2014-04-28" ' +
    'xmlns="http://geomodel.eu/schema/data/request" ' +
    'xmlns:ws="http://geomodel.eu/schema/ws/data" ' +
    'xmlns:geo="http://geomodel.eu/schema/common/geo" ' +
    'xmlns:pv="http://geomodel.eu/schema/common/pv" ' +
    'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' +
        '<site id="demo_site" name="Demo site" lat="48.61259" lng="20.827079"></site>' +
        '<processing key="GHI" summarization="HOURLY" terrainShading="true"></processing>' +
'</ws:dataDeliveryRequest>';

var request_utf8 = Buffer.from(request, 'utf-8');

let options = {
  host: 'solargis.info',
  path: `/ws/rest/pvplanner/calculate?key=${api_key}`,
  headers: {
      'Content-Type': 'application/xml',
    //   'Content-Length': Buffer.byteLength(request),
    //   'Transfer-Encoding': 'chunked', //See https://nodejs.org/api/http.html#http_request_write_chunk_encoding_callback
    },
  method: 'POST',
};

const req = https.request(options, (res) => {
    console.log(`STATUS: ${res.statusCode}`);
    console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
    res.setEncoding('utf8');
    res.on('data', (chunk) => {
        console.log(`BODY: ${chunk}`);
    });
    res.on('end', () => {
        console.log('No more data in response.');
    });
});

req.on('error', (e) => {
    console.error(`problem with request: ${e.message}`);
});

// Write data to request body
req.write(request_utf8);
req.end();

输出:

STATUS: 400
HEADERS: {"date":"Wed, 29 Jul 2020 10:00:07 GMT","server":"Apache","set-cookie":["JSESSIONID=4F3F9848F6E115329F6E00624341EB2E.balanced_ws1; Path=/ws/; Secure; HttpOnly"],"content-length":"968","connection":"close","content-type":"text/html;charset=utf-8","x-pad":"avoid browser bug"}
BODY: <html><head><title>Apache Tomcat/7.0.41 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 400 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The request sent by the client was syntactically incorrect.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.41</h3></body></html>
No more data in response.
AF7

找到了问题。我从错误的示例将请求发布到URL!正确的path行是path: `/ws/rest/datadelivery/request?key=${api_key}`,

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

春季HTTP错误400客户端发送的请求在语法上不正确

来自分类Dev

春季HTTP错误400客户端发送的请求在语法上不正确

来自分类Dev

客户端发送的请求在语法上不正确-JSON POST正文中的类型复杂

来自分类Dev

收到错误:客户端发送的请求在语法上不正确

来自分类Dev

“客户端发送的请求在语法上是不正确的。” -内容类型错误

来自分类Dev

AngularJS发布数据显示“客户端发送的请求在语法上不正确”

来自分类Dev

发送帖子请求时,客户端发送的请求在语法上不正确

来自分类Dev

Spring HTTP Status 400-客户端发送的请求在语法上不正确(添加日期输入时)

来自分类Dev

Spring MVC复选框HTTP状态400客户端发送的请求在语法上不正确

来自分类Dev

DHTMLX dhtmlxForm.send()抛出HTTP状态400-“客户端发送的请求在语法上不正确。”

来自分类Dev

正在获取HTTP状态400-客户端发送的请求在语法上不正确:使用curl来发送/发送json请求

来自分类Dev

使用@DateTimeFormat,客户端发送的请求在语法上不正确

来自分类Dev

客户端发送的请求在语法上不正确。在春季使用@RequestParam

来自分类Dev

客户端发送的请求在语法上不正确。-Spring MVC + JDBC模板

来自分类Dev

Spring @RequestBody:客户端发送的请求在语法上不正确

来自分类Dev

客户端发送的请求在spring mvc,ajax中在语法上不正确

来自分类Dev

客户端发送的请求在语法上不正确。在@ManyToOne关系中休眠,春季

来自分类Dev

Spring形式:客户端发送的请求在语法上不正确()

来自分类Dev

使用Spring MVC进行CRUD时出现错误“客户端发送的请求在语法上不正确”

来自分类Dev

将数据从Node.js发送回客户端?

来自分类Dev

执行POST请求时无法在XMLHttpRequest的node.js版本上正确发送请求正文

来自分类Dev

客户端发送的请求在语法上不正确,而使用AngularJS通过其余部分调用WebService时

来自分类Dev

Spring MVC表单-Long和String值。客户端发送的请求在语法上不正确

来自分类Dev

通过客户端发送的请求是语法不正确的Java ZonedDateTime后端

来自分类Dev

春季客户发送的请求在语法上不正确

来自分类Dev

春季客户发送的请求在语法上不正确()

来自分类Dev

错误400评估表单“发送的请求在语法上不正确”

来自分类Dev

在Node.JS中向客户端发送通知

来自分类Dev

客户端发送的请求在语法上是错误的

Related 相关文章

  1. 1

    春季HTTP错误400客户端发送的请求在语法上不正确

  2. 2

    春季HTTP错误400客户端发送的请求在语法上不正确

  3. 3

    客户端发送的请求在语法上不正确-JSON POST正文中的类型复杂

  4. 4

    收到错误:客户端发送的请求在语法上不正确

  5. 5

    “客户端发送的请求在语法上是不正确的。” -内容类型错误

  6. 6

    AngularJS发布数据显示“客户端发送的请求在语法上不正确”

  7. 7

    发送帖子请求时,客户端发送的请求在语法上不正确

  8. 8

    Spring HTTP Status 400-客户端发送的请求在语法上不正确(添加日期输入时)

  9. 9

    Spring MVC复选框HTTP状态400客户端发送的请求在语法上不正确

  10. 10

    DHTMLX dhtmlxForm.send()抛出HTTP状态400-“客户端发送的请求在语法上不正确。”

  11. 11

    正在获取HTTP状态400-客户端发送的请求在语法上不正确:使用curl来发送/发送json请求

  12. 12

    使用@DateTimeFormat,客户端发送的请求在语法上不正确

  13. 13

    客户端发送的请求在语法上不正确。在春季使用@RequestParam

  14. 14

    客户端发送的请求在语法上不正确。-Spring MVC + JDBC模板

  15. 15

    Spring @RequestBody:客户端发送的请求在语法上不正确

  16. 16

    客户端发送的请求在spring mvc,ajax中在语法上不正确

  17. 17

    客户端发送的请求在语法上不正确。在@ManyToOne关系中休眠,春季

  18. 18

    Spring形式:客户端发送的请求在语法上不正确()

  19. 19

    使用Spring MVC进行CRUD时出现错误“客户端发送的请求在语法上不正确”

  20. 20

    将数据从Node.js发送回客户端?

  21. 21

    执行POST请求时无法在XMLHttpRequest的node.js版本上正确发送请求正文

  22. 22

    客户端发送的请求在语法上不正确,而使用AngularJS通过其余部分调用WebService时

  23. 23

    Spring MVC表单-Long和String值。客户端发送的请求在语法上不正确

  24. 24

    通过客户端发送的请求是语法不正确的Java ZonedDateTime后端

  25. 25

    春季客户发送的请求在语法上不正确

  26. 26

    春季客户发送的请求在语法上不正确()

  27. 27

    错误400评估表单“发送的请求在语法上不正确”

  28. 28

    在Node.JS中向客户端发送通知

  29. 29

    客户端发送的请求在语法上是错误的

热门标签

归档