您好!@jkrúda公司,
很抱歉,您遇到了这个问题,这是根据FMEENGINE-58185提交的已知问题。作为一种解决方法,可以将HTTPCaller配置为使用“指定上载体”提交请求,并将内容类型头设置为多部分/表单数据,如本文的已接受回答中的示例:https://knowledge.亚搏在线safe.com/questions/28528/httpcaller-file-post.html
一旦这个问题得到解决,我会更新这篇文章。
请参见附带的工作台进行测试
测试HTTPCaller GET POST.fmw
我希望邮递员能回答a@b.c.公司.
结果
得到 |
岗位 |
|
url编码 |
公元前40年 |
公元前40年 |
无编码 |
a@b.c.公司 |
错误 |
这表明,对于GET请求,FME自己进行字符编码。但是对于POST请求,不应该进行编码,因为@是POST字符串值中的有效字符。价值观之间有一些类似的东西
边界=--
是的,用别的东西代替@是可行的。但之后我必须再次用@替换服务器端的数据,因为Post数据并不是正常的。使用Get请求,服务器将理解%40是@符号。
并非所有@字符都被FME用来指代内置函数:
在AttributeCreator中写入@Value@Va(@Value(_count))将导致@Value@Va(1),并且不会出现不知道函数Va的错误。
附加试验:
foo=酒吧
a=Va
b=蓝色
测试=@值(a)@值(b)(foo)
会导致
测试=@Value(foo)
而不是在
测试=巴
FME可能有一种方法告诉自己不要计算@Value(foo)
因此,FME中似乎有一个bug,它希望在不检查@和()之间是否有函数名的情况下计算POST字符串@。
您需要对请求url进行编码,尝试将其放入一个属性中,然后通过TextEncoder运行它,将编码类型设置为url(百分比编码),它将用%40替换@,这将使HTTPCaller接受它。
这里的“问题”是FME使用@来引用内置函数。