Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir-动态设置条带性\u条带库的请求头_Elixir_Phoenix Framework_Http Proxy - Fatal编程技术网

Elixir-动态设置条带性\u条带库的请求头

Elixir-动态设置条带性\u条带库的请求头,elixir,phoenix-framework,http-proxy,Elixir,Phoenix Framework,Http Proxy,我正在使用stripity_stripe库,希望通过代理服务器向stripe发送一些请求,但不发送其他请求。因此,我尝试在一些请求上动态发送hackney选项。我查阅了stripity_stripe库的代码和文档,但找不到任何示例来发送与代理相关的hackney选项。我想在config.ex文件中设置与代理相关的信息,它可以正常工作,但由于它是在配置中设置的,因此它将应用于所有请求 config :stripity_stripe, api_key: System.get_env("

我正在使用stripity_stripe库,希望通过代理服务器向stripe发送一些请求,但不发送其他请求。因此,我尝试在一些请求上动态发送hackney选项。我查阅了stripity_stripe库的代码和文档,但找不到任何示例来发送与代理相关的hackney选项。我想在config.ex文件中设置与代理相关的信息,它可以正常工作,但由于它是在配置中设置的,因此它将应用于所有请求

config :stripity_stripe,
  api_key: System.get_env("STRIPE_API_KEY"),
  hackney_opts: [
    {:ssl_options, [cacertfile: "CERT.pem"]},
    {:proxy, System.get_env("PROXY_SANDBOX_BASE_URL")},
    {:proxy_auth,
     {System.get_env("PROXY_SANDBOX_USERNAME"), System.get_env("PROXY_SANDBOX_PASSWORD")}}
  ]
我在stripity_stripe中找到一个函数request(),用于动态发送头和选项,但未能成功发送这些选项。以下是我如何尝试的:

Stripe.API.request(params, :post, "tokens", %{},
      hackney_opts: [
        {:ssl_options, [cacertfile: "/Users/apple/.ssh/CERT.pem"]},
        {:proxy, System.get_env("PROXY_SANDBOX_BASE_URL")},
        {:proxy_auth,
         {System.get_env("PROXY_SANDBOX_USERNAME"), System.get_env("PROXY_SANDBOX_PASSWORD")}}
      ]
    )

任何帮助都将不胜感激。谢谢

在调用
Stripe.API.request/5
时忽略
hackney\u选项
键--只需直接传递选项列表,例如

Stripe.API.request(
  params, 
  :post, 
  "tokens", 
  %{}, 
  ssl_options: [cacertfile: "/Users/apple/.ssh/CERT.pem"],  
  proxy: System.get_env("VGS_SANDBOX_BASE_URL")
) 
请记住,当最后一个参数是关键字列表时,括号通常被省略。你可以把它们包括进来,以便更容易地看出哪些东西属于最后一个论点

Stripe.API.request(
  params, 
  :post, 
  "tokens", 
  %{}, 
  [
    ssl_options: [cacertfile: "/Users/apple/.ssh/CERT.pem"],  
    proxy: System.get_env("VGS_SANDBOX_BASE_URL")
  ]
) 

我在hackney文档中迷失了方向,所以希望比我更聪明的人能加入进来,但是简单地看一下代码,在调用
Stripe.API.request/5
时,试着省略
hackney_选项
键,只需列出选项列表,例如
Stripe.API.request(params,:post,“tokens”,%{},ssl_选项:[cacertfile:“/Users/apple/.ssh/CERT.pem”],proxy:System.get_env(“VGS\u SANDBOX\u BASE\u URL”)
或者……您可以通过在配置中设置
:hackney
选项来覆盖客户端模块,例如,将其替换为
HTTPoison
或其他客户端(考虑到HTTPoison使用
:hackney
本身,这可能看起来很愚蠢)@Everett就是这样,直接传递选项起作用了!非常感谢你的帮助,我添加了它作为答案,这样你就可以接受它了。