对使用 curl 而不是 python 的 wso2 ESB 的 Soap 请求
Soap request to wso2 ESB working with curl, not with python
我遇到了一个奇怪的问题。当我通过使用 curl 发送 soap 请求来添加 ESB 连接器时,连接器已成功添加。当我使用 python 发送相同的消息时,我收到了这个奇怪的错误。我错过了什么?
卷曲命令:
curl --basic -u admin:admin -H "Content-Type: application/soap+xml" -k -d @request.xml https://localhost:9443/services/MediationLibraryAdminService.MediationLibraryAdminServiceHttpsSoap12Endpoint
curl 命令后的 ESB 日志:
[2015-03-20 06:09:05,154] INFO - CarbonAuthenticationUtil 'admin@carbon.super [-1234]' logged in at [2015-03-20 06:09:05,154-0600]
[2015-03-20 06:09:05,156] INFO - SynapseImportFactory Successfully created Synapse Import: kafka
这是python代码:
SoapMessage = SOAP_MESSAGE.encode('utf-8')
url = 'https://localhost:9443/services/MediationLibraryAdminService.MediationLibraryAdminServiceHttpsSoap12Endpoint'
headers = {'content-type': 'application/soap+xml; charset=UTF-8',
"Content-Length": len(SoapMessage),
"SOAPAction": url}
r = requests.post(url, data=SoapMessage, headers=headers, verify=False, auth=HTTPBasicAuth('admin', 'admin'))
python 命令后的 ESB 日志:
[2015-03-20 06:27:59,346] INFO - CarbonAuthenticationUtil 'admin@carbon.super [-1234]' logged in at [2015-03-20 06:27:59,345-0600]
[2015-03-20 06:28:08,317] INFO - LibraryArtifactDeployer Synapse Library named '{org.wso2.carbon.connector}kafka' has been deployed from file : /opt/$
[2015-03-20 06:28:08,318] ERROR - MediatorFactoryFinder Unknown mediator referenced by configuration element : {http://ws.apache.org/ns/synapse}kafka
[2015-03-20 06:28:08,318] WARN - ProxyServiceDeployer Proxy service hot deployment from file: /opt/wso2esb/wso2esb-4.8.0/repository/deployment/server$
org.apache.synapse.SynapseException: Unknown mediator referenced by configuration element : {http://ws.apache.org/ns/synapse}kafka
at org.apache.synapse.config.xml.MediatorFactoryFinder.getMediator(MediatorFactoryFinder.java:218)
at org.apache.synapse.config.xml.AbstractListMediatorFactory.addChildren(AbstractListMediatorFactory.java:41)
at org.apache.synapse.config.xml.SequenceMediatorFactory.createAnonymousSequence(SequenceMediatorFactory.java:70)
at org.apache.synapse.config.xml.ProxyServiceFactory.createProxy(ProxyServiceFactory.java:178)
at org.apache.synapse.deployers.ProxyServiceDeployer.deploySynapseArtifact(ProxyServiceDeployer.java:58)
at org.wso2.carbon.proxyadmin.ProxyServiceDeployer.deploySynapseArtifact(ProxyServiceDeployer.java:46)
at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:190)
at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)
at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:807)
at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144)
at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377)
at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254)
at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371)
at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59)
at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67)
at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:79)
at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:124)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:165)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:701)
肥皂消息
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://org.apache.synapse/xsd">
<soap:Header/>
<soap:Body>
<xsd:updateStatus>
<xsd:libQName>{org.wso2.carbon.connector}kafka</xsd:libQName>
<xsd:libName>kafka</xsd:libName>
<xsd:packageName>org.wso2.carbon.connector</xsd:packageName>
<xsd:status>enabled</xsd:status>
</xsd:updateStatus>
</soap:Body>
所以问题是我在 </soap:Body>
之后输入了一个输入。这导致服务崩溃。删除输入修复了问题。
我遇到了一个奇怪的问题。当我通过使用 curl 发送 soap 请求来添加 ESB 连接器时,连接器已成功添加。当我使用 python 发送相同的消息时,我收到了这个奇怪的错误。我错过了什么?
卷曲命令:
curl --basic -u admin:admin -H "Content-Type: application/soap+xml" -k -d @request.xml https://localhost:9443/services/MediationLibraryAdminService.MediationLibraryAdminServiceHttpsSoap12Endpoint
curl 命令后的 ESB 日志:
[2015-03-20 06:09:05,154] INFO - CarbonAuthenticationUtil 'admin@carbon.super [-1234]' logged in at [2015-03-20 06:09:05,154-0600]
[2015-03-20 06:09:05,156] INFO - SynapseImportFactory Successfully created Synapse Import: kafka
这是python代码:
SoapMessage = SOAP_MESSAGE.encode('utf-8')
url = 'https://localhost:9443/services/MediationLibraryAdminService.MediationLibraryAdminServiceHttpsSoap12Endpoint'
headers = {'content-type': 'application/soap+xml; charset=UTF-8',
"Content-Length": len(SoapMessage),
"SOAPAction": url}
r = requests.post(url, data=SoapMessage, headers=headers, verify=False, auth=HTTPBasicAuth('admin', 'admin'))
python 命令后的 ESB 日志:
[2015-03-20 06:27:59,346] INFO - CarbonAuthenticationUtil 'admin@carbon.super [-1234]' logged in at [2015-03-20 06:27:59,345-0600]
[2015-03-20 06:28:08,317] INFO - LibraryArtifactDeployer Synapse Library named '{org.wso2.carbon.connector}kafka' has been deployed from file : /opt/$
[2015-03-20 06:28:08,318] ERROR - MediatorFactoryFinder Unknown mediator referenced by configuration element : {http://ws.apache.org/ns/synapse}kafka
[2015-03-20 06:28:08,318] WARN - ProxyServiceDeployer Proxy service hot deployment from file: /opt/wso2esb/wso2esb-4.8.0/repository/deployment/server$
org.apache.synapse.SynapseException: Unknown mediator referenced by configuration element : {http://ws.apache.org/ns/synapse}kafka
at org.apache.synapse.config.xml.MediatorFactoryFinder.getMediator(MediatorFactoryFinder.java:218)
at org.apache.synapse.config.xml.AbstractListMediatorFactory.addChildren(AbstractListMediatorFactory.java:41)
at org.apache.synapse.config.xml.SequenceMediatorFactory.createAnonymousSequence(SequenceMediatorFactory.java:70)
at org.apache.synapse.config.xml.ProxyServiceFactory.createProxy(ProxyServiceFactory.java:178)
at org.apache.synapse.deployers.ProxyServiceDeployer.deploySynapseArtifact(ProxyServiceDeployer.java:58)
at org.wso2.carbon.proxyadmin.ProxyServiceDeployer.deploySynapseArtifact(ProxyServiceDeployer.java:46)
at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:190)
at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)
at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:807)
at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144)
at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377)
at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254)
at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371)
at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59)
at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67)
at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:79)
at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:124)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:165)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:701)
肥皂消息
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://org.apache.synapse/xsd">
<soap:Header/>
<soap:Body>
<xsd:updateStatus>
<xsd:libQName>{org.wso2.carbon.connector}kafka</xsd:libQName>
<xsd:libName>kafka</xsd:libName>
<xsd:packageName>org.wso2.carbon.connector</xsd:packageName>
<xsd:status>enabled</xsd:status>
</xsd:updateStatus>
</soap:Body>
所以问题是我在 </soap:Body>
之后输入了一个输入。这导致服务崩溃。删除输入修复了问题。