2014-10-20 4 views
0

django에 대해 suds를 사용하여 WSDL 응답을 얻으려고합니다. 하지만 아무런 이유없이 유형을 찾을 수 없습니다. 비눗물 클라이언트가 저를 공급WSDL 형식을 찾을 수 없습니다.

<Profiles> 
    <ProfileInfo> 
    <Profile ProfileType="1"> 
     <Customer> 
     </Customer> 
    </Profile> 
    </ProfileInfo> 
</Profiles> 

2 개체 :

ns0:ProfileType 
ns0:ProfilesType 

더 ProfileInfo 개체가 없습니다

Type not found: 'ProfileInfo' 

이처럼 내 XML이 보일 것입니다 방법이다.

내가 할 것입니다 : 내가 만들 수있는 ProfileInfo 개체가 없기 때문에

(ProfilesType){ 
    ProfileInfo[] = <empty> 
} 

, 내가 시도 :

profiles = client.factory.create('ns0:ProfilesType') 

이 개체는 다음과 같습니다 가 나는 ProfilesType 객체를 생성 두 가지 접근 방식 : 1. ProfileInfo에 ProfileType 개체 추가

profile = client.factory.create('ns0:ProfileType') 
profiles.ProfileInfo.append(profile) 

이것은 서버가 거부하는 다음 XML을 생성합니다.

<Profiles> 
    <ProfileInfo> 
    <Customer> 
    </Customer> 
    </ProfileInfo> 
</Profiles> 

2 .. 더미 profileinfo 객체를 생성하고 여기에 PROFILETYPE을 추가

이 오류가 발생합니다
profile_info = {"ProfileInfo": []} 
profile_info["ProfileInfo"].append(profile) 
profiles.ProfileInfo.append(profile_info) 

는 "을 (를) 찾을 수 없습니다 유형 : 'ProfileInfo'"

어떻게해야합니까? 나는 다양한 조합을 시도했지만 아무것도 작동하지 않는 것 같습니다.

+0

아직 발견되지 않았습니다. 나는 똑같은 문제를 겪는다. 따라서 문제를 해결 한 경우 솔루션을 공유하십시오. –

답변

0

더미 ProfileInfo 개체를 만들어야했습니다.

profile_info = {"Profile": []} 
profile_info["Profile"].append(profile) 
profiles = client.factory.create('ns0:ProfilesType') 
profiles.ProfileInfo.append(profile_info) 
0

나는 비눗물 의사를 시도하는 건가, 도움이 될 수 있습니다, 참조 : Suds: Type not found on response

이 답변이 바른 길에 저를 얻었다. 가져 오기 의사는 작동하지 않았다, 그러나 이것은 한 :

https://fedorahosted.org/suds/wiki/Documentation#FIXINGBROKENSCHEMAs

을 내가 누락 된 유형에 대해 참조 위치를 확인하기 위해 스키마를 개설하고, 네임 스페이스와 위치, 여기에이 가득 차이 발견

from suds.xsd.sxbasic import Import 

ns = '<fill in the namespace for the missing type>' 
schema_url = '<fill in the url>' 
Import.bind(ns, location) 
# repeat this for all missing types 
# and than create the client 
client = Client(wsdl_url) 
message= '%s' % client 
# log the message, and this works for me!