悬赏 -- 关于如何使用httpInput节点进行post提交

实现附件文件中的“统一接入服务”   使用httpInput post提交

需求是这样的:

由于这边需要集成到总线上的厂家有多个,因此有多个信息系统,由于部分业务流程非常复杂,因此可能其他厂家需要直接调用MQ的发送和接收的函数,但是发送和接收也不能直接给他们用,因为有可能造成的情况是,他们胡乱调用,造成esb瘫痪或者其他问题,而这种情况发生的话我们也不容易发现问题所在,是谁调用导致问题的发生,因此我想到的办法就是,我将MQ发送的函数封装成webservice,其他厂家都需要安全验证来进行调用,若需要回调,则其他厂家调用的时候带上回调的webservice地址,也就是说,其他厂家需要发布一个接收MQ反馈信息的webservice,其他厂家调用我这边MQ发送的webservice之后,由我这边通过调用其他厂家的webservice将反馈信息传递给他们。

现在的问题是,如何使用HttpInput节点进行post提交

get提交我已经实现了,方法如下:

http input -------> Compute --------> http request -------> http reply

http input节点的设置:
Basic(path suffix for url):/ws
Advanced(Parse Query String):勾上

Compute节点设置:
指定data source
ESQL module如下


CREATE COMPUTE MODULE ws_Compute
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
  declare url character;
  declare queryString character;
  declare ws_id character;
  CALL CopyMessageHeaders();
  CALL CopyEntireMessage();
  
  set queryString = InputRoot.HTTPInputHeader."X-Query-String";
  set url = 'http://192.168.100.120:3344/Send.jsp?' || queryString;
  set OutputLocalEnvironment.Destination.HTTP.RequestURL = url;
  set OutputLocalEnvironment.Destination.HTTP.RequestLine.Method = 'GET';
  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;






上面的实现了get提交的方式,但是post提交的方式就不知道怎么弄了   哪位大哥会的帮帮忙




我是上述需求,跟以下附件解决方案中55页和70页图中的“统一接入服务”差不多  忘各位高手出手相助如何实现




附件:

附件图标基于SOA的应用集成平台规范.part1.rar (6.68 MB)

附件图标基于SOA的应用集成平台规范.part2.rar (2.22 MB)

参与12

11同行回答

jtboy01jtboy01研发工程师四川托日
如果是从MQ中将结果返回给WEB,你将消息组装成一个SOAP包调用请求方WEB就可以了显示全部
如果是从MQ中将结果返回给WEB,你将消息组装成一个SOAP包调用请求方WEB就可以了收起
软件开发 · 2012-03-12
浏览1044
jtboy01jtboy01研发工程师四川托日
回复  liushaoyi     因为MQ传输本身是异步的,有些调用不一定能马上能得到反馈信息,所以我的做法是通 ...xgx1985xgx 发表于 2012-3-10 19:24     请诉在下愚钝,我不清楚你的get和post分别指的那个需求或业务。post是业务调用完成后返回给请...显示全部
回复  liushaoyi


    因为MQ传输本身是异步的,有些调用不一定能马上能得到反馈信息,所以我的做法是通 ...
xgx1985xgx 发表于 2012-3-10 19:24



   

请诉在下愚钝,我不清楚你的get和post分别指的那个需求或业务。post是业务调用完成后返回给请求方的消息吗?收起
软件开发 · 2012-03-12
浏览1027

    提问者

    xgx1985xgx
    开发工程师lk

    问题状态

  • 发布时间:2012-03-10
  • 关注会员:1 人
  • 问题浏览:9307
  • 最近回答:2012-03-13
  • X社区推广