Suds 忽略代理设置

2024-01-01

我正在尝试使用 salesforce-python-toolkit 对 Salesforce API 进行 Web 服务调用,但是我在让客户端通过代理时遇到问题。由于该工具包基于 suds 之上,因此我尝试只使用 suds 本身,看看是否可以让它尊重那里的代理设置,但它也不起作用。

这是在 OS X 10.7 (python 2.7) 和 ubuntu 12.04 上的 suds 0.3.9 上进行测试的。

我发出的一个示例请求最终没有通过代理(只是在本地运行的 burp 或 charles 代理):

import suds
ws = suds.client.Client('file://sandbox.xml',proxy={'http':'http://localhost:8888'})
ws.service.login('user','pass')

我已经尝试过使用代理的各种方法 - 删除 http://、使用 IP、使用 FQDN。我已经浏览了 pdb 中的代码并看到它设置了代理选项。我还尝试在没有代理的情况下实例化客户端,然后使用以下命令进行设置: ws.set_options(proxy={'http':'http://localhost:8888'})

suds不再使用代理了吗?我没有看到它直接列在这里http://jortel.fedorapeople.org/suds/doc/suds.options.Options-class.html http://jortel.fedorapeople.org/suds/doc/suds.options.Options-class.html,但我确实看到它正在运输中。我需要通过传输进行不同的设置吗?当我在 pdb 中单步执行时,它看起来确实像是在使用传输,但我不确定如何使用。

谢谢你!


我进入了 freenode 上的#suds,Xelnor/rbarrois 提供了一个很好的答案!显然,suds 中的自定义映射会覆盖 urllib2 使用系统配置环境变量的行为。该解决方案现在依赖于相应设置的 http_proxy/https_proxy/no_proxy 环境变量。

我希望这可以帮助其他遇到代理和 suds(或其他使用 suds 的库)问题的人。https://gist.github.com/3721801 https://gist.github.com/3721801

from suds.transport.http import HttpTransport as SudsHttpTransport 


class WellBehavedHttpTransport(SudsHttpTransport): 
    """HttpTransport which properly obeys the ``*_proxy`` environment variables.""" 

    def u2handlers(self): 
        """Return a list of specific handlers to add. 

        The urllib2 logic regarding ``build_opener(*handlers)`` is: 

        - It has a list of default handlers to use 

        - If a subclass or an instance of one of those default handlers is given 
            in ``*handlers``, it overrides the default one. 

        Suds uses a custom {'protocol': 'proxy'} mapping in self.proxy, and adds 
        a ProxyHandler(self.proxy) to that list of handlers. 
        This overrides the default behaviour of urllib2, which would otherwise 
        use the system configuration (environment variables on Linux, System 
        Configuration on Mac OS, ...) to determine which proxies to use for 
        the current protocol, and when not to use a proxy (no_proxy). 

        Thus, passing an empty list will use the default ProxyHandler which 
        behaves correctly. 
        """ 
        return []

client = suds.client.Client(my_wsdl, transport=WellBehavedHttpTransport())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Suds 忽略代理设置 的相关文章

随机推荐

  • App 类中的静态上下文 - 内存泄漏

    为了能够在应用程序中的任何位置获取应用程序上下文 我创建了这样的 App 类 public class App extends Application private static Context mContext public stati
  • 带 if 语句的 Postgresql 函数

    我怎样才能使这个伪代码在 Postgresql 中工作 create or replace function getf arg character varying 255 returns int as if arg a then retur
  • Python 网页抓取被阻止

    我想抓取德国房地产网站 immobilienscout24 de 的网页 我想下载给定 URL 的 HTML 然后离线使用该 HTML 它不适合商业用途或出版 我也不打算向该网站发送垃圾邮件 它只是用于编码练习 我想编写一个 python
  • 核心数据谓词日期比较

    我试图获取与用户 selectedDate 匹配的实体中的所有对象 它是 NSDate 核心数据代码很好 但我的谓词一直返回 0 结果 数据库中的日期与用户选择的日期相同 应如何使用谓词将 selectedDate 与实体中的日期进行比较
  • 使用 VS 2005 C# 将 Excel 转换为 Oracle 数据库

    我想构建一个实用程序 可以将 Excel 工作表 列是固定的 但工作表可以是任意数量 中的数据导入到 Oracle 数据库 你能建议我应该如何 读取Excel表格 n张 最好的方法 验证数据 批量插入数据库 我关心的是这里的表现 每张纸可以
  • 为什么 cython 嵌入插件在 python 解释器中比 rust-c 接口版本具有更高的性能?

    我想问一些关于python解释器的底层原理的问题 因为我自己搜索的过程中并没有得到太多有用的信息 我最近一直在使用 rust 编写 python 插件 这为 python 的 cpu 密集型任务提供了显着的加速 并且与 c 相比 编写速度也
  • C++ tmpnam 替代方案

    我有一个 C 库 它使用tmpnam NULL 创建一个临时文件 我需要破解这个 因为它在根文件夹 c 或 中生成临时文件 因此它需要管理权限 如何使用有效的临时路径将此功能更改为其他功能 Thanks Though tmpnam返回前面加
  • OBJECT 和 EMBED 标签是否始终位于顶部?

    我有一个我制作的网站 我在该网站上流式传输视频 它开始 看起来很酷 但我用 CSS 制作的菜单总是在视频下方 因此某些链接会在对象后面消失 有谁知道我是否可以解决这个问题 我想我尝试过一次 z index 无济于事 我刚刚重新发布了这个问题
  • 这种语言有下推自动机(PDA)吗?

    the language is An B 2n Cn where n gt 0 我认为是有的 因为你可以这样处理 推入A 推入B 每个C从堆栈中弹出3次 如果没有C并且堆栈为空 则返回true 否则返回false 使用泵引理来证明这不是上下
  • TypeScript 错误 TS2403:后续变量声明必须具有相同的类型

    我的 TypeScript 项目似乎遇到了一些编译错误 完整的错误是 node modules types mocha index d ts 2680 13 error TS2403 Subsequent variable declarat
  • 有适合新手的 XML/XSD 教程吗?

    有谁知道任何关于 XSD XML 的新手教程 这些教程简单地解释了事情 但详细介绍了如何做事情 以下是有关使用 XSD 验证 XML 的教程 http www ibm com developerworks xml tutorials x v
  • 数据表 colspan 排序

    当引入 colspan 或 rowspan 时 Datatable jquery 插件会出现错误 有没有其他办法可以渡过 只需使用一些 jQuery 手动完成即可 function var tableRows myDatatable tbo
  • C++ 一个标头多个源

    I have a large class Foo1 class Foo public void apples1 void apples2 void apples3 void oranges1 void oranges2 void orang
  • isinstance(x, list) 迭代包含字符串和列表的列表时

    At 由内而外迭代嵌套列表 https stackoverflow com questions 14960380 iterating nested list inside out 14960687 comment21002419 14960
  • 根据 WooCommerce 产品类别禁用特定购物车商品数量字段

    在我使用的 woocommerce 中从 WooCommerce 产品类别的购物车中隐藏 删除商品 https stackoverflow com questions 54033207 hide remove item from cart
  • 如何运行Hadoop程序?

    我已经在笔记本电脑上安装了 Hadoop 并成功运行了安装指南中给出的示例程序 但是 我无法运行程序 rohit renaissance1 hadoop ch2 hadoop MaxTemperature input ncdc sample
  • PermissionError:pip 从 8.1.1 升级到 8.1.2

    我正在尝试将 pip 从 8 1 1 升级到 8 1 2 但它显示以下 PermissionError WinError 5 Access is denied 如何升级pip C gt python m pip install upgrad
  • 如何处理 multiprocessing.Pool 中的初始化错误?

    当初始化程序抛出如下错误时 脚本将不会停止 我想在开始主进程之前中止 不要运行 do something from multiprocessing import Pool import contextlib def initializer
  • 如何在 ARM Cortex-a8 中使用乘法和累加内在函数?

    如何使用GCC提供的乘累加内在函数 float32x4 t vmlaq f32 float32x4 t float32x4 t float32x4 t 谁能解释一下我必须传递给这个函数的三个参数 我的意思是源寄存器和目标寄存器以及函数返回什
  • Suds 忽略代理设置

    我正在尝试使用 salesforce python toolkit 对 Salesforce API 进行 Web 服务调用 但是我在让客户端通过代理时遇到问题 由于该工具包基于 suds 之上 因此我尝试只使用 suds 本身 看看是否可