Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > How to capture a SOAP exception from a webservice?

Reply
Thread Tools

How to capture a SOAP exception from a webservice?

 
 
Nate Imaqaguy
Guest
Posts: n/a
 
      08-02-2006
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

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Chris McMahon
Guest
Posts: n/a
 
      08-02-2006


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

Nate Imaqaguy wrote:
> 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
>
> --
> Posted via http://www.ruby-forum.com/.


 
Reply With Quote
 
 
 
 
Nate Imaqaguy
Guest
Posts: n/a
 
      08-03-2006
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





Chris McMahon wrote:
> 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



--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Nate Imaqaguy
Guest
Posts: n/a
 
      08-04-2006
Hello.

= )

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

Thanks,

-nate




Nate Imaqaguy wrote:
> 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
>
>
>
>
>
> Chris McMahon wrote:
>> 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



--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Bira
Guest
Posts: n/a
 
      08-04-2006
On 8/3/06, Nate Imaqaguy <(E-Mail Removed)> wrote:
> 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
> -----------------------------
>
> I had something pretty similar to this already. =85but it's not
> working.


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

 
Reply With Quote
 
Nate Imaqaguy
Guest
Posts: n/a
 
      08-04-2006
Excellent; thanks!



Bira wrote:
> On 8/3/06, Nate Imaqaguy <(E-Mail Removed)> wrote:
>> puts e.to_s
>> end
>> end
>> -----------------------------
>>
>> I had something pretty similar to this already. �but it's not
>> working.

>
> 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



--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
Screen Capture With Mouse , Mouse Position Capture Max Java 7 08-08-2009 11:51 PM
Exception of type 'System.Web.HttpUnhandledException' wasthrown.Exception has been thrown by the target of an invocation.System.WebSystem.Exception jobs ASP .Net 1 11-16-2007 05:57 PM
SuperVideoCap work as a broadcast capture and screen capture and record tool. hely0123 Media 0 10-30-2007 08:59 AM
while executing my client program i get the exception javax.naming.LinkException: [Root exception is javax.naming.LinkException: [Root exception is javax.naming.NameNotFoundException: remaining if plz anybody know how to solve this problem then mahesh Java 0 03-08-2007 12:26 PM



Advertisments