How to capture a SOAP exception from a webservice?

N

Nate Imaqaguy

I’m trying to catch a soap exception from a web service, but I’m a n00b
and am having a hard time figuring it out.

I’m using ruby 1.8.4 (win32)--if it matters.

I’ve got the start of my program created and can receive successful soap
objects back from the webservice. So that’s all working good.

Next, I want to capture SOAP exception errors. For example, I’ll get a
message saying something does not exist or is not found. This is the
same message that is in the return XML “faultstring†tag.

Do I have to find a way to parse the returned XML, or is there an easy
way to grab the soap exception I'm looking for?

Thanks for the help. BTW, I tried to use the forum search (I always try
that first), but it's down for maintenance or something like that.

Thanks all,

-nate
 
C

Chris McMahon

begin
@query = @soap.apiFunction(
{'Key'=>'Value','Key2'=>Value2'}
)
#rescue ::SOAP::FaultError => e
rescue ::XSD::ValueSpaceError => e
assert_equal("{http://www.foo.com/api}FooBarEnum: cannot accept
'foo'",e.to_s)
end

Hope that helps...
-Chris
 
N

Nate Imaqaguy

Hmmm…

**If** I understand what you were trying to tell me, I **think** I
adapted your example to my code and came up with this. BTW, “param†is
an int I’m passing to the method.

----------------------------
if results = soap.FindPatientById( param )
then puts results.first_name
puts results.last_name
else
begin
rescue ::SOAP::FaultError => e
# rescue ::XSD::ValueSpaceError => e
puts e.to_s
end
end
-----------------------------

I had something pretty similar to this already. …but it’s not
working.

The way I’m doing it, I don’t think I needed the “assert equalâ€
statement—right? The most confusing parts to me are the “rescue†lines.
Specifically, which one to use (I went with SOAP, but tried both) and
how you knew to put “FaultError†there.

Like I said, I’m a total n00b to ruby. I haven’t even tried programming
anything since my last C class about 6 years ago, so please be patient
if I’m missing something obvious.

= )

Thanks again,

-nate
 
N

Nate Imaqaguy

Hello.

= )

I know I'm close on this one--I can feel it. Can anyone help? I'd
appreciate it a lot.

Thanks,

-nate
 
B

Bira

Hmmm=85

----------------------------
if results =3D soap.FindPatientById( param )
then puts results.first_name
puts results.last_name
else
begin
rescue ::SOAP::FaultError =3D> e
# rescue ::XSD::ValueSpaceError =3D> e
puts e.to_s
end
end

From what I understand, I believe your method call has to be inside
the "begin...rescue" block, or "rescue" won't be able to see the error
when it happens.

In other words, something like this:

begin
if ( results =3D soap.FindPatientById( param ) )
puts results.last_name
end
rescue ::SOAP::FaultError =3D> e
puts e.to_s
end


--=20
Bira
http://compexplicita.blogspot.com
http://sinfoniaferida.blogspot.com
 
N

Nate Imaqaguy

Excellent; thanks!


From what I understand, I believe your method call has to be inside
the "begin...rescue" block, or "rescue" won't be able to see the error
when it happens.

In other words, something like this:

begin
if ( results = soap.FindPatientById( param ) )
puts results.last_name
end
rescue ::SOAP::FaultError => e
puts e.to_s
end
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top