【发布时间】:2016-03-02 02:48:54
【问题描述】:
我已将 sas 存储过程部署为 Web 服务。我想在 python 中查看存储过程的输出。 如果有人可以帮助我,我将不胜感激。
这是我用过的流程——
创建的网络服务是 - 'https://sasdev.wdw.disney.com:443/SASBIWS/services/abcweb.wsdl'
我认为,它将存储过程存储在一个函数中,这里是 abc_web()
我在这里使用的python代码是-
import urllib
import logging
from suds.client import Client
#from suds.wsse import *
import requests
import suds_requests
url = 'https://sasdev.wdw.disney.com:443/SASBIWS/services/abcweb.wsdl'
namespace = 'https://sasdev.wdw.disney.com:443/SASBIWS/services'
client = Client(url)
client.service.abc_web()
但它收到一个错误:
ERROR:suds.client:<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://tempuri.org/abcweb" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<ns1:Body>
<ns0:abc_web/>
</ns1:Body>
</SOAP-ENV:Envelope>
WebFault:服务器引发错误:“客户端身份验证”类型 执行“abcweb”服务期间发生异常。这 异常如下:没有可用的安全上下文。'
【问题讨论】:
-
您的 URL 不是外部的。看起来它设置为仅供内部访问。你如何在 python 中将用户凭据传递给你的 WS?例如,您是否能够从 SoapUI 连接到您的 WS?
-
当我尝试使用 SOAPUI 对其进行测试时,我收到错误消息 - 在执行“abcweb”服务期间发生了“客户端身份验证”类型的异常。例外如下:没有可用的安全上下文。故障代码:1000
-
嘿@Jinsi,如果有的话,您目前如何将凭据传递给 WS?
-
security = Security() token = UsernameToken('username', 'password') security.tokens.append(token) client.set_options(wsse=security) client.set_options(retxml=True) 结果= client.service.abc_web() 这就是我 pssing 凭据的方式,这是正确的方式吗?
-
从 SOAP XML 的角度来看,它看起来是正确的,但我不是 python 专家。事实是,您没有正确验证自己。请参阅下面的答案以获取更详细的说明。
标签: python web-services soap wsdl sas