用Python访问NetSuite数据
我想用Python从NetSuite获取数据,同时也想在NetSuite中添加或更新数据。比如,我想通过Python创建销售订单并添加订单项。
我知道他们有一个WSDL文件可以用来实现这个功能。(我本来希望他们也有一个API,但似乎没有……)有没有人能分享一些在Python中使用这个WSDL的例子?有没有更好的方法可以和NetSuite进行整合?
3 个回答
1
Netsuite为Java、.Net和PHP提供了工具包,可以用来访问他们的网络服务。对于其他编程语言,要么有第三方的工具包,要么就得自己发送原始的SOAP请求。
在我的Python项目中,我使用的是原始SOAP请求的方法。我建议你先用现有的工具包熟悉一下Netsuite的网络服务,然后再用这些知识来生成Python中的原始SOAP请求。SOAPUI这个工具也会很有帮助。
你有没有试过restlets?它们通常是网络服务的一个不错的替代方案。
3
我已经和Netsuite的网络服务打交道大约一周了,虽然文档不是很清楚,但一旦你了解了其他常见网络服务的工作方式,就会发现适应起来非常简单。我附上了一个小脚本,用于登录并获取Netsuite中所有服务和数据类型的完整列表。
使用工厂方法来创建与Netsuite网络服务交互的对象。
我使用了suds这个Python库来处理SOAP协议。
# -*- coding: utf-8 -*-
from suds.client import Client
import os, time, sys, datetime
import suds
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
reload(sys)
sys.setdefaultencoding('utf8')
NS_HOST = 'https://webservices.netsuite.com'
email ='myemail@xxxxxx.com'
pwd ='mypwd'
account = "99999999"
NS_ENDPOINT = "2016_2"
NS_ROLE = 3
wsdl = NS_HOST + "/wsdl/v" + NS_ENDPOINT + "_0/netsuite.wsdl"
client = Client(url=wsdl)
#You can get the methods and types with this object
print client
ApplicationInfo = client.factory.create('ns16:ApplicationInfo')
ApplicationInfo.applicationId = "xxxxx-XXXX-XXXX-XXXX-XXXXXXXX"
client.set_options(location= NS_HOST + "/services/NetSuitePort_" + NS_ENDPOINT, soapheaders={'applicationInfo':ApplicationInfo})
passport = client.factory.create('ns4:Passport')
passport.email = email
passport.password = pwd
passport.account = account
recordRef = client.factory.create('ns4:RecordRef')
recordRef.name="MX - Gerencia de Contabilidad"
passport.role = recordRef
client.service.login(passport)