Groups | Blog | Home
all groups > dotnet web services > april 2005 >

dotnet web services : Web Service returning types - BIG PROBLEMS



Matthias De Ridder
4/21/2005 6:04:20 AM
Hello,

I really hope that someone will be able to help me, because I'm desperate now!

I'm a student, graduating this year, and I'm working on a thesis where C#
Web Services are involved. I only have three weeks to finish it all!

My GUI and Web services were finished, but I hadn't tested them. So I linked
the GUI to the Web service and started testing them.

From the GUI, I called the Web service method:

[WebMethod]
[XmlInclude(typeof(Tender)), XmlInclude(typeof(Offer)),
XmlInclude(typeof(Product))]
public ArrayList GetTenders(string user, string password)

This method all tenders out of a database, and sends them back in an
ArrayList.

The class Tender looks like this:

public class Tender
{
#region Private fields

private string name;
private string surname;
private string hospital;
private string tenderID;
private DateTime date;
private DateTime dateLimit;
private ArrayList productList;
private ArrayList offerList;

#endregion

#region Constructors

public Tender()
{
this.name = "";
this.surname = "";
this.hospital = "";
this.tenderID = "";
this.productList = new ArrayList();
this.offerList = new ArrayList();
}

public Tender(string name, string surname, string hospital, DateTime date,
DateTime dateLimit, string tenderID)
{
this.name = name;
this.surname = surname;
this.hospital = hospital;
this.date = date;
this.dateLimit = dateLimit;
this.tenderID = tenderID;
this.productList = new ArrayList();
this.offerList = new ArrayList();
}
#endregion
// Getters and setters
}

The problem is that I receive an array containg arrays of XmlNodes as
returning value of the Web Service method GetTenders.

I really need the help from someone to solve this problem, and be able to
get the tender information back from the web service instead of the XmlNodes.

I've read several related questions in this discussion group, but none of
them helped me! I hope someone can help me!
recoil NO[at]SPAM community.nospam
4/21/2005 1:18:40 PM
What you should be doing is not returning an ArrayList but you should
be returning Tender[] or whatever object you need. This assumes that
you are consuming your web service via a Web Reference. If not please
follow the instructions provided at the bottom.
Any object that needs to be used on both the web service and client
that is an ArrayList should not be an arraylist but should be the
strongly typed object and should be exposed as a property. This causes
the increased headache of adding the items to the arraylist and then at
the last minute creating an ArrayOfObject[] that is the appropraite
size and then copying the Items over. This will however ensure that the
client can get the objects easily and effortlessly.

Hope this helps


What your client project needs to do is to add a Web Reference.
In your client project go to Project -> Add Web Reference. Type in the
URL that your Web Service is located at.
http://bleahbleah.com/folder/peter.asmx

There is a text box that will have a default value of "WebReference" if
memory serves me right.
Any classes that are publicly exposed via the
AddThis Social Bookmark Button