python 中 SOAP 请求的 HTTP500 结果

HTTP500 result from SOAP request in python

这个问题对于一项服务来说可能相当具体,但我不明白为什么我会从 SOAP 服务收到 HTTP500 响应。我看到了我想要访问的服务,我看到了哪些参数是必需的。我仍然收到 HTTP500。服务或我的代码有问题吗?

#!/usr/bin/env python
# Import WSDL package
from SOAPpy import WSDL

# Create service interface
wsdlUrl = 'http://bioinf.cs.ucl.ac.uk/psipred_api/wsdl'

# Download the WSDL file
server = WSDL.Proxy(wsdlUrl)

# Get the information about which services are provided by this host
print server.methods.keys()

# After selecting the service of interest let's find out which arguments are necessary
callInfo = server.methods['PsipredSubmit']
for para in callInfo.inparams:
   print para.name, para.type

# Now let's discover what we will get back
for para in callInfo.outparams:
   print para.name, para.type

sequence = "MLELLPTAVEGVSQAQITGRPEWIWLALGTALMGLGTLYFLVKGMGVSDPDAKKFYAITTLVPAIAFTMYLSMLLGYGLTMVPFGGEQNPIYWARYADWLFTTPLLLLDLALLVDADQGTILALVGADGIMIGTGLVGALTKVYSYRFVWWAISTAAMLYILYVLFFGFTSKAESMRPEVASTFKVLRNVTVVLWSAYPVVWLIGSEGAGIVPLNIETLLFMVLDVSAKVGFGLILLRSRAIFGEAEAPEPSAGDGAAATSD"
email = "psipred@cs.ucl.ac.uk"
subject = "test"

result = server.PsipredSubmit(sequence, email, subject, "True", "False", "False", "all")

print result

通常 500 结果表示服务器在处理您的请求时遇到意外错误。

这可能是一种临时情况,一两天后就会得到解决:可能是服务器的 RAM 芯片坏了,或者它的磁盘已满。

或者它可能完全是故意的:也许您提交的值之一在某种程度上是不正确的,并且服务器基本上是说 "You screwed up; go away."(在这种情况下,人们希望服务器会以更有帮助的诊断来响应消息,但并非总是如此。)

如果您与托管组织有正式联系,或者如果他们是愿意提供帮助的好人,您也许可以向他们发送消息询问出了什么问题。

您的代码看起来不错,我只是尝试通过 suds 访问服务器并且它有效。

from suds.client import Client
client = Client('http://bioinf.cs.ucl.ac.uk/psipred_api/wsdl')
print('PsipredSubmit' in client.wsdl.services[0].ports[0].methods)
>>> True

您平时使用代理吗?

也许服务器暂时宕机了?


sequence = "MLELLPTAVEGVSQAQITGRPEWIWLALGTALMGLGTLYFLVKGMGVSDPDAKKFYAITTLVPAIAFTMYLSMLLGYGLTMVPFGGEQNPIYWARYADWLFTTPLLLLDLALLVDADQGTILALVGADGIMIGTGLVGALTKVYSYRFVWWAISTAAMLYILYVLFFGFTSKAESMRPEVASTFKVLRNVTVVLWSAYPVVWLIGSEGAGIVPLNIETLLFMVLDVSAKVGFGLILLRSRAIFGEAEAPEPSAGDGAAATSD"
email = "psipred@cs.ucl.ac.uk"
subject = "test"
client.service.PsipredSubmit(sequence, email, subject, "True", "False", "False", "all")
>>> (reply){
>>>    message = "job submission succesful"
>>>        job_id = "2e9f0864-826a-11e6-9da3-00163e110593"
>>>    state = 1
>>>      }

使用 suds 提交作业有效,也许您只是在错误的时间抓住了服务器,或者您的 SOAP 库有问题?