Consuming HTTP Services in Python Transcripts
Chapter: Calling SOAP services from Python
Lecture: SOAP services from a tool-based ecosystem
Login or
purchase this course
to watch this video and the rest of the course contents.
0:01
Now, let's do something that might be a little bit unexpected for this Python class,
0:04
what I want to do is I want to show you what the expected experience is
0:08
for the people that created Soap services, like how is this suppose to go,
0:14
and then we'll see how Python sort of fits into this world
0:18
that was created for a place that is all about tooling driven infrastructure.
0:24
So here we are at the consumer services API talkpython,fm
0:28
and we have our Soap service and it shows us these operations,
0:31
although you'll see that we are not really going to need to look at this list
0:35
because it will completely describe them to us with the tooling,
0:38
so what you do in Soap is you start out with this thing
0:41
called a wsdl a web service description language,
0:45
and let me just pull this up for you here, you can see here
0:49
that we have here is what all post looks like, this is,
0:51
it takes nothing as a parameter, for the response it is going to return
0:57
an array of posts, well an array of posts is a sequence of these things
1:01
called posts and then where is the post, here is the post right,
1:04
so you can see this is like well not pretty and full of namespaces and junk like that,
1:10
it does describe to us basically what is suppose to happen in this exchange,
1:16
and this is not meant for people, it's meant for tooling
1:19
so notice I am over here in Windows 10 and one of the frameworks
1:22
that really popularized this is CSharp and .Net
1:25
so let me show you what people who created web services
1:29
expected to happen, and then we'll go actually do this in Python,
1:32
so I am going to create a super simple little app here,
1:35
if you don't know CSharp don't worry,
1:38
we are going to spend five lines of code on it and then we are going to be done,
1:41
alright, here is our super simple application,
1:44
and this is what the people who made the Soap expected to happen,
1:47
you right click and you say add service reference,
1:49
and this is something called wsf it's kind of nasty
1:52
so I am going to go to this older add web reference variant here,
1:56
and I am going to just paste in that wsdl
1:58
and say show me what you think this wsdl is,
2:01
okay we found this service, called Soap and actually if we go back here,
2:04
let me cancel this, if we put it in here we'll even get like a little description of it,
2:08
so here we have this service and it's a blog, it has a blog service,
2:12
and here is those pieces I told you about, right,
2:15
so let's go back and not mess with that wsf stuff like I said,
2:18
it's overly complicated, it's not necessary,
2:21
so here I am going to put for the service reference, notice it tries to reverse this,
2:24
I'll just say this will be service, or svc, something like that.
2:28
So, when I press this button it's going to read the wsdl
2:31
and generate a type from there, it's happening in here,
2:34
and you can see there is this web service,
2:37
if I say show everything we can look in here
2:39
and there is actually this reference thing okay,
2:42
so somewhere in here we are going to have a blog and this,
2:47
it turns out it's actually the name of the class that has all the operations on it,
2:51
so don't worry about that, we are just going to come over here,
2:54
and let's just suppose we want to get and list the blog post,
2:57
so I'll say var client=svc.blog, and we create one of those
3:03
and it knows where the service came from, so it knows how to get back there,
3:08
so of course new, this is not Python is it, and then I'll say var post=client
3:14
and then here are all of our operations, get post,
3:17
get post async, we'll have all posts and so on,
3:20
right, so we are going to call that and then we'll just say for each
3:24
and then let's just do a console writeline which is equivalent to print,
3:28
we'll say something about the post as certain number of views
3:35
and then here we can just pass in post.title,
3:38
notice that the thing knows all the stuff that is being passed around,
3:42
because it looked at that wsdl and it generated it,
3:46
now this doesn't work in CSharp, but we got to put the numbers here,
3:50
let me put g0 so we get some comma separated pieces here
3:54
and I'll just do one more right line here, all blog posts, like this,
3:57
so let's go and run this and see what we get.
4:00
Boom, so look at that, it goes put and it talks to the service
4:04
easy breezy python clients has this many number of views, and so on,
4:07
maybe I wanted an N here, yeah, there is our comma separator.
4:14
Okay, so that is the expected experience right, we go over here
4:18
we run the tooling, the tooling generates all the rich types
4:21
and then we call them and they kind of look like their local functions
4:24
that we're calling like client.allpost but in fact, those go to the server.
4:28
Next up, we're going to see how Python fits into this world.