[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

How to capture a SOAP exception from a webservice?

Nate Imaqaguy

8/2/2006 9:43:00 PM

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

7 Answers

Chris McMahon

8/2/2006 11:11:00 PM

0



begin
@query = @soap.apiFunction(
{'Key'=>'Value','Key2'=>Value2'}
)
#rescue ::SOAP::FaultError => e
rescue ::XSD::ValueSpaceError => e
assert_equal("{http://www.f...}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-....

Nate Imaqaguy

8/3/2006 5:30:00 PM

0

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.f...}FooBarEnum: cannot accept
> 'foo'",e.to_s)
> end
>
> Hope that helps...
> -Chris


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

Nate Imaqaguy

8/4/2006 2:42:00 PM

0

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.f...}FooBarEnum: cannot accept
>> 'foo'",e.to_s)
>> end
>>
>> Hope that helps...
>> -Chris


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

Bira

8/4/2006 4:50:00 PM

0

On 8/3/06, Nate Imaqaguy <breakingsoftware@gmail.com> wrote:
> Hmmm…
>
> ----------------------------
> 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.

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


--
Bira
http://compexplicita.bl...
http://sinfoniaferida.bl...

Nate Imaqaguy

8/4/2006 11:33:00 PM

0

Excellent; thanks!



Bira wrote:
> On 8/3/06, Nate Imaqaguy <breakingsoftware@gmail.com> 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-....

JF

1/31/2009 4:27:00 AM

0

Jim Hetley wrote:

> Those are pedestal-mounted deck guns, firing an explosive harpoon.

I've fired a GPMG from the hip, but that was a paltry .3inch.

JF

Jim Hetley

1/31/2009 3:46:00 PM

0

On Jan 30, 11:27 pm, JF <jul...@oopsoopsfloodsclimbers.co.uk> wrote:
> Jim Hetley wrote:
> > Those are pedestal-mounted deck guns, firing an explosive harpoon.
>
> I've fired a GPMG from the hip, but that was a paltry .3inch.
>
> JF

An M79 grenade launcher has some kick to it. Never tried one of them
newfangled over/under hybrids with the M-16.

Jim