Netsuite Web服务(Python)故障
这是我在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 个回答
我之前也遇到过类似的错误,直到我把suds的版本降回到0.3.8。0.3.9的版本出错了,但没有给我任何有用的信息。你可以用命令 easy_install suds=="0.3.8"
来安装这个版本,然后再试试你的代码。
我知道这个问题有点老了,但几个月前我也遇到过同样的情况。我尝试用Suds连接SuiteTalk,但因为我对SOAP不太熟悉,根本没有进展。虽然我在某个时候成功连接过(我记得当时用的是不同于Suds的库),但要搞清楚该用哪个WSDL真是让人头疼。
总之,我放弃了SuiteTalk的方法,开始写一些restlet脚本。Python对HTTP请求的支持非常好(我个人用的是很棒的'requests'模块):
http://docs.python-requests.org/en/latest/#
我明白使用SOAP协议可能有它的好处(我想这更适合企业使用),但对我来说,写一个对应的restlet来完成我想做的事情效果很好。我们通过这种方式每天都在进行大量的自动化任务。我最近把请求的代码重写了一下,使用了线程,而Netsuite允许你同时发起最多40个请求,这在处理成千上万条记录时差别很大。
如果你还在为用Python处理SOAP而苦恼,我建议你试试restlet。