【问题标题】:NetSuite Integration - Problems with CustomFieldListNetSuite 集成 - CustomFieldList 的问题
【发布时间】:2016-06-09 14:47:55
【问题描述】:

我正在尝试通过其 WebService 平台 (SuiteTalk) 创建与 NetSuite 的集成,但在使用 CustomField 保存客户时遇到问题。

这是我的代码:

        StringCustomFieldRef customField = new StringCustomFieldRef();
        customField.setValue("9999999");
        customField.setInternalId("custentity_xx_xxx_xxx");

        CustomFieldRef[] customFields = new CustomFieldRef[1];
        customFields[0] = customField;

        Customer customer = new Customer();
        customer.setSubsidiary(subs);
        customer.setIsPerson(true);
        customer.setFirstName("Joe");
        customer.setLastName("Silver");
        customer.setCustomFieldList(customFields);

        _port.add(customer);

不管怎样,总是一样的回应:

[Fault Message]: org.xml.sax.SAXException: {urn:core_2016_1.platform.webservices.netsuite.com}CustomFieldRef is an abstract type and cannot be instantiated

我所做的与帮助中心的文档和示例中的完全一样。

有什么想法吗?

谢谢。

【问题讨论】:

  • 不应该是setCustomFieldList(new CustomFieldList(customFields))吗?
  • 我看到了一些这样的例子。但我不知道他们是否更改了 wsdl,因为生成的类现在正在接收一个数组。 setCustomFieldList(com.netsuite.webservices.platform.core_2016_1.CustomFieldRef[] customFieldList)
  • 我也有同样的问题,从php导入java,可能和这个bugs.php.net/bug.php?id=39179有关

标签: java soap netsuite suitetalk


【解决方案1】:

我使用 Python SDK 查找

custom_field = self.ns_client.SearchStringCustomField(searchValue='China', scriptId="cust_scriptId", operator='contains')
customFieldList = self.ns_client.SearchCustomFieldList(customField)
basic_search = self.ns_client.basic_search_factory('Item',
customFieldList=customFieldList)
paginated_search = PaginatedSearch(client=self.ns_client,
                                           type_name='Item',
                                           basic_search=basic_search,
                                           pageSize=20)
return self._paginated_search_to_generator(paginated_search=paginated_search)

也许你可以用数据来查询

<soap-env:Body>
        <ns0:search
            xmlns:ns0="urn:messages_2019_1.platform.webservices.netsuite.com">
            <ns0:searchRecord
                xmlns:ns4="urn:accounting_2019_1.lists.webservices.netsuite.com"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns4:ItemSearch">
                <ns1:basic
                    xmlns:ns1="urn:accounting_2019_1.lists.webservices.netsuite.com">
                    <ns2:customFieldList
                        xmlns:ns2="urn:common_2019_1.platform.webservices.netsuite.com">
                        <ns3:customField
                            xmlns:ns3="urn:core_2019_1.platform.webservices.netsuite.com"
                            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" scriptId="custitem_origin" operator="contains" xsi:type="ns3:SearchStringCustomField">
                            <ns3:searchValue>China</ns3:searchValue>
                        </ns3:customField>
                    </ns2:customFieldList>
                </ns1:basic>
            </ns0:searchRecord>
        </ns0:search>
    </soap-env:Body>

【讨论】:

    【解决方案2】:

    CustomFieldList 语法在 2014_1 年发生了变化。 customField 的 ID 必须在 &lt;customField/&gt; 元素的 scriptId 属性上指定,而不是在您的示例中指定 internalId 字段。

    ruby netsuite bindings 句柄根据所使用的 API 版本正确生成自定义字段列表。如果您仍然遇到 Java 库问题,请使用 ruby​​ 绑定生成 XML,以便轻松识别 Java 绑定可能出错的地方。

    【讨论】:

      【解决方案3】:

      经过几天的摆弄,我发现 Apache Axis 在抽象类型方面存在问题,除非您可以自定义后端的行为方式,否则您无能为力(NS 不是这种情况) .问题是服务器在传递数组时不返回实现类类型而是基类类型。但是,您可以以不同的方式构建 WSDL 以将所有数组包装到列表中,然后这些列表将按照示例正常工作。最值得注意的是 -w and -a 标志具有魔力。

      这是我用来构建 WSDL 的命令:

      java -classpath ./axis.jar:commons-logging-1.0.4.jar:commons-discovery-0.2.jar:jaxrpc.jar:wsdl4j-1.5.1.jar:axis-ant.jar:saaj.jar:log4j-1.2.8.jar:activation.jar:javax.mail.jar org.apache.axis.wsdl.WSDL2Java --timeout 180 netsuite.wsdl.xml -a -w -o nswsdlmaster
      

      此外,为了让生活更轻松,制作一个项目,包括所有依赖项并从中构建一个 jar。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-02
        • 2015-07-18
        • 1970-01-01
        相关资源
        最近更新 更多