Hi Srivatsn --

Thanks! Here's the constructor for the C# code:

------------------------
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;

//
// This source code was auto-generated by wsdl, Version=2.0.50727.42.
//

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="UserServiceSoap", 
Namespace="http://targetprocess.com";)]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(DataTransferObject))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(object[]))]
public partial class UserService : 
Microsoft.Web.Services3.WebServicesClientProtocol {
    private System.Threading.SendOrPostCallback 
RetrieveAllForDefaultRoleOperationCompleted;
    private System.Threading.SendOrPostCallback GetByIDOperationCompleted;
    private System.Threading.SendOrPostCallback CreateOperationCompleted;
    private System.Threading.SendOrPostCallback UpdateOperationCompleted;
    private System.Threading.SendOrPostCallback DeleteOperationCompleted;
    private System.Threading.SendOrPostCallback 
RetrieveAllOperationCompleted;
    private System.Threading.SendOrPostCallback RetrieveOperationCompleted;
    private System.Threading.SendOrPostCallback 
RetrievePageOperationCompleted;
    private System.Threading.SendOrPostCallback 
RetrieveCountOperationCompleted;
   
    /// <remarks/>
    public UserService() {
        this.Url = 
"http://ingenuity.tpondemand.com/Services/UserService.asmx";;
    }
------------------------

On the python side, I'm trying to generate this dynamically using

------------------------
import clr
clr.AddReference("DynamicWebServiceHelpers.dll")
from DynamicWebServiceHelpers import *
userService = 
WebService.Load('http://www.example.com/Services/UserService.asmx')
------------------------

Any ideas?

Ramon



Srivatsn Narayanan wrote:
> In the C# side you are using the constructor of UserService to create an 
> instance of WebServicesClientProtocol. In the python side, you don't seem to 
> be creating an instance of this. You can have a look at the constructor of 
> the generated C# UserService and see how the instance is created and 
> translate that to python. If you are having trouble with that post the 
> constructor code here.
>
> Srivatsn
>
> -----Original Message-----
> From: Ramon M. Felciano @ Yahoo [mailto:[EMAIL PROTECTED]
> Sent: Monday, March 10, 2008 2:53 PM
> To: Srivatsn Narayanan
> Cc: Discussion of IronPython
> Subject: Re: [IronPython] Newbie: IronPython and WSE 3.0 (translation from C# 
> example)?
>
> Got it -- that may be the problem. I generated the stubs as you
> suggested using WseWsdl3.exe (which I assume is the same as the tool you
> mention):
>
> ----------------------------------------
> C:\Program Files\Microsoft WSE\v3.0\Tools>WseWsdl3.exe /type:webClient
> http://www.example.com/Services/UserService.asmx?wsdl
> Web Services Enhancements 3.0 for Microsoft .NET.
>  Copyright (c) Microsoft Corporation.
>
> Microsoft (R) Web Services Description Language Utility
> [Microsoft (R) .NET Framework, Version 2.0.50727.42]
> Copyright (C) Microsoft Corporation. All rights reserved.
> Writing file 'C:\Program Files\Microsoft WSE\v3.0\Tools\UserService.cs'.
> ----------------------------------------
>
> The generated C# code does extend the right class:
>
> ----------------------------------------
> public partial class UserService :
> Microsoft.Web.Services3.WebServicesClientProtocol {
> ----------------------------------------
>
> but this code does not contain the SetClientCredential or SetPolicy
> methods, which is maybe not surprising giving the partial keyword.
>
> I can't figure out how to do the equivalent in IronPython. If I check
> the type of the returned object, it is of type UserService, and I can't
> introspect it to find it's superclass. Am I correct in assuming that
> there is no equivalent to wsdl.exe for IronPython? I.e. there is no way
> I can use WebServicesHelpers to dump out Python code so I can inspect
> this more directly?
>
> Ramon
>
> Srivatsn Narayanan wrote:
>   
>> Well, if the WebService.Load method returned an object that this method then 
>> yes this should work. You can use wsdl.exe to generate the proxy in C# (or 
>> if u already have the code for UserServiceWse) then you can find out how the 
>> call is being made inside the UserServiceWse constructor and translate that 
>> to python.
>>
>>
>> -----Original Message-----
>> From: Ramon M. Felciano @ Yahoo [mailto:[EMAIL PROTECTED]
>> Sent: Monday, March 10, 2008 10:05 AM
>> To: Srivatsn Narayanan
>> Cc: Discussion of IronPython
>> Subject: Re: [IronPython] Newbie: IronPython and WSE 3.0 (translation from 
>> C# example)?
>>
>> Hi Srivatsn --
>>
>> Thanks for the quick reply. I don't actually have UserServiceWse defined
>> on the python side; I assumed that would be dynamically-generated from
>> the WSDL call and that the appropriate methods would be found through
>> introspectino. Is that incorrect? Is there some sort of stub-generator I
>> need to run in order to auto-generate the UserService client class?
>>
>> Ramon
>>
>> Srivatsn Narayanan wrote:
>>
>>     
>>> Looks like Webservice.Load is not returning a WebServicesClientProtocol. In 
>>> the C# world you are instantiating a UserServiceWse. You could do the same 
>>> in python so:
>>> userService = UserServiceWse()
>>>
>>> I assume the definition of that class would look like this:
>>> def UserServiceWse(WebServicesClientProtocol):
>>>         def __init__(self): #The constructor.
>>>                 self.blah = foo
>>>                 ...
>>>
>>> -----Original Message-----
>>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Ramon M. 
>>> Felciano @ Yahoo
>>> Sent: Sunday, March 09, 2008 11:09 PM
>>> To: [email protected]
>>> Cc: Ramon Felciano
>>> Subject: [IronPython] Newbie: IronPython and WSE 3.0 (translation from C# 
>>> example)?
>>>
>>> Hi --
>>>
>>> I'm trying to hook up IronPython to web services secured by Web Services
>>> Enhancements (WSE) 3.0. I have some C# sample code that I'm trying to
>>> convert to Python and am running into some trouble. I'm a C# and Windows
>>> ..NET newbie (using IronPython from the commmandline), so the libraries
>>> in question are foreign to me, so I was hoping someone could help me
>>> resolve this. The sample code shows:
>>>
>>> --------------------------
>>> using Microsoft.Web.Services3;
>>> using Microsoft.Web.Services3.Design;
>>> using Microsoft.Web.Services3.Security;
>>> using Microsoft.Web.Services3.Security.Tokens;
>>> namespace TpIntegration
>>> {
>>> public class TpPolicy : Policy {
>>>   public TpPolicy() {
>>>     Assertions.Add(new UsernameOverTransportAssertion());
>>>   }
>>>   public static UsernameToken GetUsernameToken(string username, string
>>> password, PasswordOption passwordOption) {
>>>     UsernameToken token = new UsernameToken(username, password,
>>> passwordOption);
>>>     ISecurityTokenManager securityTokenManager =
>>>
>>> SecurityTokenManager.GetSecurityTokenManagerByTokenType(WSTrust.TokenTypes.UsernameToken);
>>>     securityTokenManager.CacheSecurityToken(token);
>>>     return token;
>>>   }
>>>   public static void ApplyAutheticationTicket(WebServicesClientProtocol
>>> protocol, string userName, string password) {
>>>     UsernameToken token = GetUsernameToken(userName, password,
>>> PasswordOption.SendPlainText);
>>>     protocol.SetClientCredential(token);
>>>     protocol.SetPolicy(new TpPolicy());
>>>   }
>>> }
>>> }
>>> --------------------------
>>>
>>> This is then called using something like this:
>>>
>>> --------------------------
>>> UserServiceWse userService = new UserServiceWse();
>>> TpPolicy.ApplyAutheticationTicket(userService, "admin", "admin");
>>> --------------------------
>>>
>>> I've taken a swing at converting it:
>>>
>>> --------------------------
>>> import Microsoft.Web.Services3
>>> import Microsoft.Web.Services3.Design
>>> import Microsoft.Web.Services3.Security
>>> import Microsoft.Web.Services3.Security.Tokens
>>>
>>> def getUsernameToken(username, password, passwordOption):
>>>     token =
>>> Microsoft.Web.Services3.Security.Tokens.UsernameToken(username,
>>> password, passwordOption)
>>>     securityTokenManager =
>>> Microsoft.Web.Services3.Security.Tokens.SecurityTokenManager.GetSecurityTokenManagerByTokenType(Microsoft.Web.Services3.Security.WSTrust.TokenTypes.UsernameToken)
>>>     securityTokenManager.CacheSecurityToken(token)
>>>     return token
>>>
>>> def applyAutheticationTicket(protocol, userName, password):
>>>     token = getUsernameToken(userName, password,
>>> Microsoft.Web.Services3.Security.Tokens.PasswordOption.SendPlainText)
>>>     protocol.SetClientCredential(token)
>>>     protocol.SetPolicy(TpPolicy())
>>> --------------------------
>>>
>>> but when calling it:
>>>
>>> --------------------------
>>> userService =
>>> WebService.Load('http://www.example.com/Services/UserService.asmx')
>>> username = "test"
>>> password = "test"
>>> applyAutheticationTicket(userService, username, password)
>>> --------------------------
>>>
>>> I get the following error:
>>>
>>> AttributeError: 'UserService' object has no attribute 'SetClientCredential'
>>>
>>> Any suggestions on how to debug this further? In case it matters, this
>>> is code from
>>> http://www.targetprocess.com/download/tp20/TP_2_Web_Services_Guide.pdf.
>>>
>>> Thanks!
>>>
>>> Ramon
>>>
>>> _______________________________________________
>>> Users mailing list
>>> [email protected]
>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>>
>>>       
>>
>>     
>
>
>   

_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to