集成总线httprequest内容长度



为了向http服务器发送PUT请求,我使用了一个HttpRequest节点。该消息通过一个ESQL计算节点。问题是发送到服务器的消息的内容长度为0。请求不包含任何数据,尽管用于消息正文的变量包含内容。如何从esql代码传递put http请求的内容?

esql代码如下:

SET OutputLocalEnvironment = InputLocalEnvironment; 
SET OutputLocalEnvironment.Destination.HTTP.RequestURL = ...; 
SET OutputRoot.HTTPRequestHeader."Content-Type" = 'text/plain'; 
SET OutputRoot.HTTPRequestHeader."Authorization" = 'Bearer ' || … ; 
SET OutputRoot.HTTPRequestHeader."Host" = ...'; 
SET OutputRoot.BLOB = CAST(InputRoot.BLOB.BLOB as char CCSID 1208 Encoding 815); 

HTTPRequest节点的配置为

HttpSettings

HTTP method: PUT 
HTTP version 1.1 
Enable keep-alive <checked> 
Request Timeout: 20 
HTTP Proxy Location : <blank> 
Follow HTTP redirection: <unchecked> 
Advanced: 
Use whole input message as request : <un-checked> 
Request Message Location in Tree : InputRoot.BLOB 
Replace input message with web-service response: <checked> 
Generate default HTTP headers : <un-checked> 
VALIDATION: None

请尝试:

SET OutputRoot.BLOB.BLOB = CAST(InputRoot.BLOB.BLOB as char CCSID 1208 Encoding 815); 

(我没有合乎逻辑的解释,但你对输入的解释是正确的(顺便说一下,这条线对我来说有点奇怪

到您的计算节点中只需写下它,您的输入消息就可以输出

CREATE COMPUTE MODULE Compute
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
CALL CopyMessageHeaders();
CALL CopyEntireMessage();

RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;

希望这对你有用

相关内容

最新更新