我正在使用detergent向salesforce soap api拨打肥皂。 我想调用它的函数调用/ 4但它失败了:
:detergent.call("metadata.wsdl", "describeMetadata", ["37.0"], [{'sessionId',token.access_token}])
** (exit) an exception was raised:
** (FunctionClauseError) no function clause matching in :erlsom_write.processAnyAttributes/4
src/erlsom_write.erl:501: :erlsom_write.processAnyAttributes('ok', [], [{:ns, 'http://schemas.xmlsoap.org/soap/envelope/', 'soap', :unqualified}, {:ns, 'http://soap.sforce.com/2006/04/metadata', 'p', :qualified}, {:ns, 'http://www.w3.org/2001/XMLSchema', 'xsd', :qualified}], {[{'soap', 'http://schemas.xmlsoap.org/soap/envelope/'}], 0})
src/erlsom_write.erl:325: :erlsom_write.processAlternativeValue/8
传递令牌的标头语法的预期格式是什么?
答案 0 :(得分:3)
您正在使用期望最后一个参数为detergent.call/4
的#call_opts
。您正在传递一个列表[由单个元组组成],并且无法匹配函数子句。
我不确定你到底要通过什么(参见#call_opts
definition),但我相信下面的内容可以解决这个问题:
:detergent.call(
"metadata.wsdl",
"describeMetadata",
["37.0"],
#call_opts{http_client_options=[{'sessionId',token.access_token}]}
)