通过 SOAP API 添加租户会引发错误
Adding a tenant via SOAP API throws error
我正在使用 APIM 3.1.0。我需要将新租户添加到我正在使用 SOAP API 的系统中。我正在发送请求。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.mgt.tenant.carbon.wso2.org" xmlns:xsd="http://beans.common.stratos.carbon.wso2.org/xsd">
<soapenv:Header/>
<soapenv:Body>
<ser:addTenant>
<!--Optional:-->
<ser:tenantInfoBean>
<xsd:active>true</xsd:active>
<xsd:adminFirstName>vk</xsd:adminFirstName>
<xsd:adminFullName>fname</xsd:adminFullName>
<xsd:adminLastName>k</xsd:adminLastName>
<xsd:adminName>soapadmin</xsd:adminName>
<xsd:adminPassword>11111</xsd:adminPassword>
<xsd:createdDate>2020-07-08T11:30:00+05:30</xsd:createdDate>
<xsd:domain>mydomain.com</xsd:domain>
<xsd:email>vk@abc.com</xsd:email>
<xsd:id>15</xsd:id>
<xsd:realmConfig></xsd:realmConfig>
</ser:tenantInfoBean>
</ser:addTenant>
</soapenv:Body>
</soapenv:Envelope>
但是为此我收到了回复
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server</faultcode>
<faultstring>Provided domain name is empty.</faultstring>
<detail>
<ns:TenantMgtAdminServiceException xmlns:ns="http://services.mgt.tenant.carbon.wso2.org">
<ns:TenantMgtAdminServiceException>
<axis2ns2:Message xmlns:axis2ns2="http://services.mgt.tenant.carbon.wso2.org">Provided domain name is empty.</axis2ns2:Message>
</ns:TenantMgtAdminServiceException>
</ns:TenantMgtAdminServiceException>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
为什么我已经正确地传递了域名,但我得到的是 Provided domain name is empty?
更新
现在我按照建议更改了请求,但出现未知错误。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.mgt.tenant.carbon.wso2.org" xmlns:xsd="http://beans.common.stratos.carbon.wso2.org/xsd">
<soapenv:Header/>
<soapenv:Body>
<ser:addTenant>
<!--Optional:-->
<ser:tenantInfoBean>
<!--Optional:-->
<xsd:active>true</xsd:active>
<!--Optional:-->
<xsd:admin>testadmin</xsd:admin>
<!--Optional:-->
<xsd:adminPassword>12345</xsd:adminPassword>
<!--Optional:-->
<xsd:createdDate>2020-07-08T11:30:00+05:30</xsd:createdDate>
<!--Optional:-->
<xsd:email>vk@abc.com</xsd:email>
<!--Optional:-->
<xsd:firstname>fname</xsd:firstname>
<!--Optional:-->
<xsd:lastname>lname</xsd:lastname>
<!--Optional:-->
<xsd:originatedService></xsd:originatedService>
<!--Optional:-->
<xsd:successKey></xsd:successKey>
<!--Optional:-->
<xsd:tenantDomain>mydomain.com</xsd:tenantDomain>
<!--Optional:-->
<xsd:tenantId>5</xsd:tenantId>
<!--Optional:-->
<xsd:usagePlan>demo</xsd:usagePlan>
</ser:tenantInfoBean>
</ser:addTenant>
</soapenv:Body>
</soapenv:Envelope>
回应
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server</faultcode>
<faultstring>unknown</faultstring>
<detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
我最初使用的请求与您提到的相同。但在 WSDL 合同中,租户类型是
<xs:element minOccurs="0" name="active" type="xs:boolean"/>
<xs:element minOccurs="0" name="adminFirstName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="adminFullName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="adminLastName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="adminName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="adminPassword" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="createdDate" nillable="true" type="xs:date"/>
<xs:element minOccurs="0" name="domain" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="email" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="id" type="xs:int"/>
<xs:element minOccurs="0" name="realmConfig" nillable="true" type="ax2987:RealmConfiguration"/>
addTenant
在https://localhost:9443/services/TenantMgtAdminService?wsdl
1中的请求如下。请尝试以下请求。
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="http://services.mgt.tenant.carbon.wso2.org" xmlns:xsd="http://beans.common.stratos.carbon.wso2.org/xsd">
<soap:Header/>
<soap:Body>
<ser:addTenant>
<!--Optional:-->
<ser:tenantInfoBean>
<!--Optional:-->
<xsd:active>?</xsd:active>
<!--Optional:-->
<xsd:admin>?</xsd:admin>
<!--Optional:-->
<xsd:adminPassword>?</xsd:adminPassword>
<!--Optional:-->
<xsd:createdDate>?</xsd:createdDate>
<!--Optional:-->
<xsd:email>?</xsd:email>
<!--Optional:-->
<xsd:firstname>?</xsd:firstname>
<!--Optional:-->
<xsd:lastname>?</xsd:lastname>
<!--Optional:-->
<xsd:originatedService>?</xsd:originatedService>
<!--Optional:-->
<xsd:successKey>?</xsd:successKey>
<!--Optional:-->
<xsd:tenantDomain>?</xsd:tenantDomain>
<!--Optional:-->
<xsd:tenantId>?</xsd:tenantId>
<!--Optional:-->
<xsd:usagePlan>?</xsd:usagePlan>
</ser:tenantInfoBean>
</ser:addTenant>
</soap:Body>
</soap:Envelope>
您收到 Provided domain name is empty.
错误,因为您的请求包含 <xsd:domain>mydomain.com</xsd:domain>
而不是 <xsd:tenantDomain>mydomain.com</xsd:tenantDomain>
我正在使用 APIM 3.1.0。我需要将新租户添加到我正在使用 SOAP API 的系统中。我正在发送请求。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.mgt.tenant.carbon.wso2.org" xmlns:xsd="http://beans.common.stratos.carbon.wso2.org/xsd">
<soapenv:Header/>
<soapenv:Body>
<ser:addTenant>
<!--Optional:-->
<ser:tenantInfoBean>
<xsd:active>true</xsd:active>
<xsd:adminFirstName>vk</xsd:adminFirstName>
<xsd:adminFullName>fname</xsd:adminFullName>
<xsd:adminLastName>k</xsd:adminLastName>
<xsd:adminName>soapadmin</xsd:adminName>
<xsd:adminPassword>11111</xsd:adminPassword>
<xsd:createdDate>2020-07-08T11:30:00+05:30</xsd:createdDate>
<xsd:domain>mydomain.com</xsd:domain>
<xsd:email>vk@abc.com</xsd:email>
<xsd:id>15</xsd:id>
<xsd:realmConfig></xsd:realmConfig>
</ser:tenantInfoBean>
</ser:addTenant>
</soapenv:Body>
</soapenv:Envelope>
但是为此我收到了回复
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server</faultcode>
<faultstring>Provided domain name is empty.</faultstring>
<detail>
<ns:TenantMgtAdminServiceException xmlns:ns="http://services.mgt.tenant.carbon.wso2.org">
<ns:TenantMgtAdminServiceException>
<axis2ns2:Message xmlns:axis2ns2="http://services.mgt.tenant.carbon.wso2.org">Provided domain name is empty.</axis2ns2:Message>
</ns:TenantMgtAdminServiceException>
</ns:TenantMgtAdminServiceException>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
为什么我已经正确地传递了域名,但我得到的是 Provided domain name is empty?
更新
现在我按照建议更改了请求,但出现未知错误。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.mgt.tenant.carbon.wso2.org" xmlns:xsd="http://beans.common.stratos.carbon.wso2.org/xsd">
<soapenv:Header/>
<soapenv:Body>
<ser:addTenant>
<!--Optional:-->
<ser:tenantInfoBean>
<!--Optional:-->
<xsd:active>true</xsd:active>
<!--Optional:-->
<xsd:admin>testadmin</xsd:admin>
<!--Optional:-->
<xsd:adminPassword>12345</xsd:adminPassword>
<!--Optional:-->
<xsd:createdDate>2020-07-08T11:30:00+05:30</xsd:createdDate>
<!--Optional:-->
<xsd:email>vk@abc.com</xsd:email>
<!--Optional:-->
<xsd:firstname>fname</xsd:firstname>
<!--Optional:-->
<xsd:lastname>lname</xsd:lastname>
<!--Optional:-->
<xsd:originatedService></xsd:originatedService>
<!--Optional:-->
<xsd:successKey></xsd:successKey>
<!--Optional:-->
<xsd:tenantDomain>mydomain.com</xsd:tenantDomain>
<!--Optional:-->
<xsd:tenantId>5</xsd:tenantId>
<!--Optional:-->
<xsd:usagePlan>demo</xsd:usagePlan>
</ser:tenantInfoBean>
</ser:addTenant>
</soapenv:Body>
</soapenv:Envelope>
回应
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server</faultcode>
<faultstring>unknown</faultstring>
<detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
我最初使用的请求与您提到的相同。但在 WSDL 合同中,租户类型是
<xs:element minOccurs="0" name="active" type="xs:boolean"/>
<xs:element minOccurs="0" name="adminFirstName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="adminFullName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="adminLastName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="adminName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="adminPassword" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="createdDate" nillable="true" type="xs:date"/>
<xs:element minOccurs="0" name="domain" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="email" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="id" type="xs:int"/>
<xs:element minOccurs="0" name="realmConfig" nillable="true" type="ax2987:RealmConfiguration"/>
addTenant
在https://localhost:9443/services/TenantMgtAdminService?wsdl
1中的请求如下。请尝试以下请求。
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="http://services.mgt.tenant.carbon.wso2.org" xmlns:xsd="http://beans.common.stratos.carbon.wso2.org/xsd">
<soap:Header/>
<soap:Body>
<ser:addTenant>
<!--Optional:-->
<ser:tenantInfoBean>
<!--Optional:-->
<xsd:active>?</xsd:active>
<!--Optional:-->
<xsd:admin>?</xsd:admin>
<!--Optional:-->
<xsd:adminPassword>?</xsd:adminPassword>
<!--Optional:-->
<xsd:createdDate>?</xsd:createdDate>
<!--Optional:-->
<xsd:email>?</xsd:email>
<!--Optional:-->
<xsd:firstname>?</xsd:firstname>
<!--Optional:-->
<xsd:lastname>?</xsd:lastname>
<!--Optional:-->
<xsd:originatedService>?</xsd:originatedService>
<!--Optional:-->
<xsd:successKey>?</xsd:successKey>
<!--Optional:-->
<xsd:tenantDomain>?</xsd:tenantDomain>
<!--Optional:-->
<xsd:tenantId>?</xsd:tenantId>
<!--Optional:-->
<xsd:usagePlan>?</xsd:usagePlan>
</ser:tenantInfoBean>
</ser:addTenant>
</soap:Body>
</soap:Envelope>
您收到 Provided domain name is empty.
错误,因为您的请求包含 <xsd:domain>mydomain.com</xsd:domain>
而不是 <xsd:tenantDomain>mydomain.com</xsd:tenantDomain>