[DUG] SOAP Question (lets see who the soap guru's are :P)

Nick nick at salehoo.com
Mon Apr 30 13:36:45 NZST 2007


Thanks for that! :-)

Edward Koryagin wrote:
> type
>   TTDSOAPClient = class(THTTPRIO)
>   private
>     { Private declarations }
>     function OngetConc( var sStr: string ): boolean;
>   protected
>     { Protected declarations }
>     procedure DoBeforeExecute(const MethodName:
> string; Request: TStream); override;
>   public
>     { Public declarations }
>   published
>     { Published declarations }
>   end;
>
>
> procedure TTDSOAPClient.DoBeforeExecute(const
> MethodName: string; Request: TStream);
> begin
>   // change Request here....
>
>   inherited DoBeforeExecute( MethodName, Request );
> end;
>
>
> --- Jason Saggers <jasons at esp.co.nz> wrote:
>
>   
>> >From the example you have posted the Request being
>> past into the
>> DoBeforeExecute isn't a var so cant be changed by
>> the Procedure.
>>
>> You can use the contents of the Request to do
>> something, but you cant
>> alter it.
>>
>>
>>
>> -----Original Message-----
>> From: delphi-bounces at delphi.org.nz
>> [mailto:delphi-bounces at delphi.org.nz]
>> On Behalf Of Nick
>> Sent: Friday, 27 April 2007 3:09 p.m.
>> To: NZ Borland Developers Group - Delphi List
>> Subject: Re: [DUG] SOAP Question (lets see who the
>> soap guru's are :P)
>>
>> Ah im still not having any luck.
>> This is what I did
>>
>> type
>>   TCHTTPRIO = class(THTTPRIO)
>>     procedure DoBeforeExecute(const MethodName:
>> string; Request: 
>> TStream); override;
>>   end;
>>
>> procedure TCHTTPRIO.DoBeforeExecute(const
>> MethodName: string; Request: 
>> TStream);
>> var
>>   StrStrm: TStringStream;
>>   ReqW: WideString;
>>   Req:string;
>> begin
>>   inherited;
>>   Req := ReqW;
>>   StrStrm := TStringStream.Create(Req);
>>   try
>>      StrStrm.Position := 0;
>>      Request.CopyFrom( StrStrm, 0 );
>>   finally
>>      StrStrm.Free;
>>   end;
>> end;
>>
>> However, it still doesn't overwrite the request
>> stream.
>> I might be missing something obvious, but I can't
>> see it....
>> I put a showmessage('hi'); in my new
>> TCHTTPRIO.DoBeforeExecute and it 
>> shows...
>>
>>
>>
>> Edward Koryagin wrote:
>>     
>>> Sorry I don't remember all details...
>>> I inherited from THTTPRIO and did changes to tags
>>>       
>> to
>>     
>>> build correct request to SOAP server.
>>>
>>> --- Nick <nick at salehoo.com> wrote:
>>>
>>>   
>>>       
>>>> This page does - my mistake
>>>> http://qc.borland.com/wc/qcmain.aspx?d=14046
>>>>
>>>> Nick wrote:
>>>>     
>>>>         
>>>>> Correct, and I see the soap request when I look
>>>>>           
>> at
>>     
>>>>>       
>>>>>           
>>>> the DoBeforeExexute
>>>>     
>>>>         
>>>>> I can't modify the var given however this page
>>>>>       
>>>>>           
>>>> shows how you can 
>>>>     
>>>>         
>>>>> modify the thttprio
>>>>>
>>>>>       
>>>>>           
> http://www.google.com/apis/adwords/developer/adwords_api_classref.html
>   
>>>   
>>>       
>>>>> but havn't done that yet (will have to
>>>>>           
>> re-compile
>>     
>>>>>       
>>>>>           
>>>> that component?)
>>>>     
>>>>         
>>>>> Edward Koryagin wrote:
>>>>>       
>>>>>           
>>>>>> Are you working with THTTPRIO?
>>>>>>
>>>>>> --- Nick <nick at salehoo.com> wrote:
>>>>>>
>>>>>>  
>>>>>>         
>>>>>>             
>>>>>>> How do you mean? Changed it to/for what for
>>>>>>>           
>>>>>>>               
>>>> what?
>>>>     
>>>>         
>>>>>>> : - )
>>>>>>>
>>>>>>> Edward Koryagin wrote:
>>>>>>>    
>>>>>>>           
>>>>>>>               
>>>>>>>> for THTTPRIO
>>>>>>>> on DoBeforeExecute
>>>>>>>> I changed Request manually
>>>>>>>>
>>>>>>>> --- Nick <nick at salehoo.com> wrote:
>>>>>>>>
>>>>>>>>        
>>>>>>>>             
>>>>>>>>                 
>>>>>>>>> Hey there,
>>>>>>>>>
>>>>>>>>> Thanks for that! :-)
>>>>>>>>> I compared the different between the D2007
>>>>>>>>>                   
>> and
>>     
>>>>>>>>>         
>>>>>>>>>               
>>>>>>>>>                   
>>>>>>> D2006
>>>>>>>    
>>>>>>>           
>>>>>>>               
>>>>>>>>> and I can see the D2007 is better, some
>>>>>>>>>                   
>> calls 
>>     
>>>>>>>>>               
>>>>>>>>>                   
>>>> much simpler. ie
>>>>     
>>>>         
>>>>>>>>> D2007 ->     function 
>>>>>>>>>                   
>> getUsageQuotaThisMonth:
>>     
>>>>>>>>> Int64; stdcall;
>>>>>>>>> D2006 ->     function         
>>>>>>>>>               
>>>>>>>>>                   
>>>>>>> getUsageQuotaThisMonth(const
>>>>>>>    
>>>>>>>           
>>>>>>>               
>>>>>>>>> parameters: getUsageQuotaThisMonth):
>>>>>>>>> getUsageQuotaThisMonthResponse; stdcall;
>>>>>>>>> I got the D2006 one working, but would of
>>>>>>>>>                   
>> been
>>     
>>>>>>>>> simplir if I had 2007 lol.
>>>>>>>>>
>>>>>>>>> I got my other pas files working except when
>>>>>>>>>               
>>>>>>>>>                   
>>>> the
>>>>     
>>>>         
>>>>>>>>> parameter is an array, I also just tried
>>>>>>>>>                   
>> with
>>     
>>>>>>>>>               
>>>>>>>>>                   
>>>> the D2007 and also 
>>>>     
>>>>         
>>>>>>>>> get an
>>>>>>>>> error when the parameter is an array.
>>>>>>>>> Here is an example.
>>>>>>>>>
>>>>>>>>> var
>>>>>>>>> param : Array_Of_KeywordRequest;  {
>>>>>>>>>                   
>> decleared
>>     
>>>>>>>>>               
>>>>>>>>>                   
>>>> as         
>>>>     
>>>>         
>>>>>>>>> Array_Of_KeywordRequest = array of
>>>>>>>>>         
>>>>>>>>>               
>>>>>>>>>                   
>>>>>>> KeywordRequest; }
>>>>>>>    
>>>>>>>           
>>>>>>>               
>>>>>>>>> begin
>>>>>>>>>   Setlength(param, 1);
>>>>>>>>>   param[0] := KeywordRequest.Create;
>>>>>>>>>   param[0].id := 0;
>>>>>>>>>   param[0].maxCpc := 5;
>>>>>>>>>   param[0].negative := false;
>>>>>>>>>   param[0].text := 'ipod';
>>>>>>>>>   param[0].type_ := Broad;
>>>>>>>>> res :=  ( Intf as TrafficEstimatorInterface
>>>>>>>>> ).estimateKeywordList(param);
>>>>>>>>>
>>>>>>>>> it complies fine but when it runs it gets a
>>>>>>>>>               
>>>>>>>>>                   
>>>> soap
>>>>     
>>>>         
>>>>>>>>> error. Any call that doesn't use an array as
>>>>>>>>>                   
>> a
>>     
>>>>>>>>>               
>>>>>>>>>                   
>>>> param runs fine.
>>>>     
>>>>         
>>>>>>>>> O.o
>>>>>>>>>
>>>>>>>>> Jeremy North wrote:
>>>>>>>>>            
>>>>>>>>>               
>>>>>>>>>                   
>>>>>>>>>> Hi Nick,
>>>>>>>>>>
>>>>>>>>>> Here are two from D2007. Don't know if they
>>>>>>>>>>                     
> === message truncated ===
>
>
> Edward Koryagin
>
> Send instant messages to your online friends http://au.messenger.yahoo.com 
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at delphi.org.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject: unsubscribe
>
>   


More information about the Delphi mailing list