Hi,
The quick summary is there is a field in a SOAP request named, "event-id", and I'm having trouble setting this field because the name contains a hyphen. How do I get around this? For example:
result = client.factory.create('ns0:UserVerifiedEvent') print result
(UserVerifiedEvent){ event-id = None user-verified-content[] = <empty> domain-specific-attributes = (MediaAttributes){ domain-attribute[] = <empty> } }
Here's more background.
I'm trying to develop an MLB.tv client for Linux and they've changed their web service to a SOAP architecture.
A little snooping and I was able to find that the first request sends an event-id and the response has a listing of all media content matching that event-id.
The request looks like this:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance%22%3E SOAP-ENV:Body <scma:user-verified-media-request xmlns:scma="http://services.bamnetworks.com/media/types/2.0%22%3E scma:event-id164-251340-2009-03-12</scma:event-id> scma:subjectLIVE_EVENT_COVERAGE</scma:subject> </scma:user-verified-media-request> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Here's the wsdl:
import suds from suds.client import Client url = 'http://www.mlb.com/flash/mediaplayer/v4/wsdl/MediaService.wsdl' client = Client(url) print client
Suds ( https://fedorahosted.org/suds/ ) version: 0.3.5 (beta) build: R483-20090324
Service ( MediaService2_0 ) tns="http://services.bamnetworks.com/media/2.0" Prefixes (1) ns0 = "http://services.bamnetworks.com/media/types/2.0" Ports (1): (MediaService2_0SOAP11port_http) Methods (1): find(xs:string event-id, xs:long content-id, xs:string playback-scenario, xs:string subject, xs:string ip-address, ns0:CreditCard credit-card, ns0:IdentityPoint fingerprint-identity-point, xs:string session-key, ) Types (28): ns0:Address ns0:AudioTrack ns0:AuthStatus ns0:BlackedOutStatus ns0:BlackoutKeywords ns0:BlackoutStatus ns0:CreditCard ns0:Entitlements ns0:IdentityPoint ns0:LocationCannotBeDeterminedStatus ns0:LoginRequired ns0:MediaAttribute ns0:MediaAttributes ns0:MediaItem ns0:MediaUserLocation ns0:NotAuthorizedStatus ns0:PreviewStatus ns0:ResponseStatusCode ns0:SessionKey ns0:SignOnRestrictionStatus ns0:SuccessStatus ns0:SwarmcastKeyGenResponse ns0:SwarmcastKeyStatusCode ns0:UserVerifiedContent ns0:UserVerifiedEvent ns0:UserVerifiedMediaItem ns0:UserVerifiedMediaRequest ns0:UserVerifiedMediaResponse
Now, I'm still trying to learn SOAP, WSDL, and suds, but somehow I need to set the event-id. I thought maybe I needed to create a UserVerifiedEvent so I tried that but I'm stumped at how to set a value to event-id because of the hyphen.
result = client.factory.create('ns0:UserVerifiedEvent') print result
(UserVerifiedEvent){ event-id = None user-verified-content[] = <empty> domain-specific-attributes = (MediaAttributes){ domain-attribute[] = <empty> } }
result.event-id = '164-251340-2009-03-12'
SyntaxError: can't assign to operator
Any ideas?
Thanks, Matthew Levine https://sourceforge.net/projects/mlbviewer/