使用erlang洗涤剂库在soap调用中传递oauth头

时间:2016-10-10 01:41:19

标签: soap erlang salesforce elixir

我正在使用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

传递令牌的标头语法的预期格式是什么?

1 个答案:

答案 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}]}
)