Netsuite Web服务(Python)故障

0 投票
2 回答
1014 浏览
提问于 2025-04-17 18:27

这是我在Stack Overflow上的第一个问题。

我刚开始接触Netsuite,发现它只支持PHP和Java这两种语言,而我个人都不太喜欢这两种。我想用Python。我之前用过SUDS这个库,做过其他工作,觉得还行,但不是特别好。在我第一次尝试使用Netsuite时,我用SUDS,想用标准的方式来创建客户端,也就是client = Client(wsdl)。我这里用的是2012年的WSDL文件。https://webservices.netsuite.com/wsdl/v2012_1_0/netsuite.wsdl

但是我连这个文件都无法导入,因为它有问题。我在这里看到了一些帖子。

有没有人能让SUDS这个SOAP库和Netsuite的WSDL一起工作?

不过,实际上使用的文件是2010年的版本。我在那个版本上没有遇到错误,完全没有修改。我想用2012.1版本。我尝试了所有可用的解决方案,但都没有用。如果有人能推荐一个好的解决方案,我甚至愿意用其他的库,而不是SUDS。

我遇到的错误是:

"fault '%s' not defined in portType '%s'" % (fault.name, self.type.name)

异常:在'NetSuitePortType'的portType中没有定义故障'ExceededRecordCountFault'

2 个回答

1

我之前也遇到过类似的错误,直到我把suds的版本降回到0.3.8。0.3.9的版本出错了,但没有给我任何有用的信息。你可以用命令 easy_install suds=="0.3.8" 来安装这个版本,然后再试试你的代码。

2

我知道这个问题有点老了,但几个月前我也遇到过同样的情况。我尝试用Suds连接SuiteTalk,但因为我对SOAP不太熟悉,根本没有进展。虽然我在某个时候成功连接过(我记得当时用的是不同于Suds的库),但要搞清楚该用哪个WSDL真是让人头疼。

总之,我放弃了SuiteTalk的方法,开始写一些restlet脚本。Python对HTTP请求的支持非常好(我个人用的是很棒的'requests'模块):

http://docs.python-requests.org/en/latest/#

我明白使用SOAP协议可能有它的好处(我想这更适合企业使用),但对我来说,写一个对应的restlet来完成我想做的事情效果很好。我们通过这种方式每天都在进行大量的自动化任务。我最近把请求的代码重写了一下,使用了线程,而Netsuite允许你同时发起最多40个请求,这在处理成千上万条记录时差别很大。

如果你还在为用Python处理SOAP而苦恼,我建议你试试restlet。

撰写回答