如何在bet365/soap Erlang包中添加Authorization头发送SOAP请求
不用纠结Erlang的语法细节,结合你懂的Elixir基础,这个需求其实很好实现。
首先明确:你需要修改的是第三个参数_Soap_options,这个参数就是用来传递HTTP请求相关配置项的。
bet365/soap底层依赖Erlang的httpc模块,所以我们可以通过http_options选项注入自定义HTTP头。具体格式是在_Soap_options的列表里新增一个元组:
{http_options, [{header, {"Authorization", "Basic <你的base64编码串>"}}]}
把你原来的测试代码修改后,最终版本应该是这样:
connectionCheck() -> % 替换成你实际的base64编码串(格式是"用户名:密码"转base64) AuthHeader = {"Authorization", "Basic dXNlcjpwYXNzd29yZA=="}, 'WsdlService_client':connectionCheck( #'P:connectionCheck'{ clientSoftwareKennung = "Elixir"}, _Soap_headers = [], _Soap_options = [ {url,"http://localhost:8091/myservice/v2.0/connectionCheck"}, {http_options, [{header, AuthHeader}]} ] ).
给你个小便利提示:你有Elixir基础的话,生成base64编码串可以直接用Elixir的Base.encode64("用户名:密码")来搞定,比如Base.encode64("admin:123456")会生成对应的编码值,直接复制到Erlang代码里就行。
内容的提问来源于stack exchange,提问作者quax




