6

如何动态设置端点地址?

我在运行时在属性中设置了端点地址,并且需要将端点地址的 URI 替换为其值。

如何使用此值设置地址的 URI 值?

4

5 回答 5

5

您可以创建您的端点,例如

<endpoint xmlns="http://ws.apache.org/ns/synapse" name="MyEndpoint">
   <http uri-template="{uri.var.full}?f={uri.var.f}{+uri.var.extra}" method="put">
   </http>
</endpoint>

然后在调用端点'MyEndpoint'之前设置属性..要为端点解析的属性必须以uri开头。

我还发现,如果你在属性名称前加上一个 +,它不会对它进行 URI 编码,所以它对于动态创建参数很方便。否则对于已知参数,你可以像上面那样为参数 f 做

所以..像

<property name="uri.var.full" value="http://jarhedz.com/viewtopic.php"/>
<property name="url.var.f" value="2"/>
<property name="uri.var.extra" value="&t=39"/>
<send>
    <endpoint key="MyEndpoint"></endpoint>
</send>

应该带你到网址http://jarhedz.com/viewtopic.php?f=2&t=39

(顺便说一句,如果您使用的是网络编辑器,它会抱怨 & .. 它的 buggy .. 将其保存为

&amp; 

.. 并将其保存为 & 或使用 javascript 设置属性)

于 2015-06-04T11:31:46.450 回答
2

使用 Header meditaor 设置“to”标头并使用默认端点。查看此帖子以获取示例。

于 2013-08-09T19:00:51.283 回答
1

使用标头调解器将“To”地址标头设置为您从分配的属性中提取的值。

于 2013-04-09T02:20:06.873 回答
0

当服务器不发布其 WSDL 时,请参阅此处的 Myobis 评论。尝试addPort没有成功。

于 2014-01-26T17:35:03.770 回答
0

这种方法对我来说是正确的。

我需要创建波纹管动态网址

http://localhost:8787/ {动态参数}

端点url里面是这样的

http://localhost:8787/ {uri.var.servicepath}

将“测试”变量设置为我的动态参数(如果需要设置表达式值,请设置它)。在属性调解器内设置“测试”值。(我做了这个内部代理服务)

<property name="uri.var.servicepath" scope="default" type="STRING" value="test"/>

创建端点

在这里我创建了 HTTP 端点

<endpoint name="ServiceEP" xmlns="http://ws.apache.org/ns/synapse">
   <http method="post" uri-template="http://localhost:8787/{uri.var.servicepath}"/>
</endpoint>

然后将此端点​​添加到您的代理服务或 API 中

<send>
   <endpoint key="ServiceEP"/>
</send>

最后你的代理看起来像这样

<inSequence>
   <property name="uri.var.servicepath" scope="default" type="STRING" 
   value="test"/>

   <send>
      <endpoint key="SurepayVASAppsEP"/>
    </send>
</inSequence>

像这样您可以更改每个 url 参数。例如:

http://{uri.var.hostname}:{uri.var.port}/{uri.var.servicepath}

于 2017-07-20T05:22:15.380 回答