I have a WebService which returns a List of RunningReport class
How do I read this XML data on the client side. How do I convert
List<RunningReportfrom the WebService side to List<RunningReporton the
client side
I have tried the following:
List<RunningReportreportList = null;
localhost.ReportService localrs = new localhost.ReportService();
localrs.Url = GetServiceURL();
reportList = localrs.RunningReports();
but I am getting the following error
Error 67 Cannot implicitly convert type 'localhost.RunningReport[]' to
'System.Collections.Generic.List<Reports.Modules.R unningJobs.RunningReport>
Thank You
Peter
//////////////// Heres' the XML data from the WebService
///////////////////////////////////
<?xml version="1.0" encoding="utf-8" ?>
ArrayOfRunningReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://wsinc.com/webservices/">
<RunningReport>
<ReportID>0</ReportID>
<CreatedBy>12</CreatedBy>
<ItemId>1</ItemId>
<OutputType>PDF</OutputType>
</RunningReport>
<RunningReport>
<ReportID>0</ReportID>
<CreatedBy>12</CreatedBy>
<ItemId>2</ItemId>
<OutputType>PDF</OutputType>
</RunningReport>
</ArrayOfRunningReport>
///////////////////////////////////// Here's the class that the Webservice
is returning: ////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ReportInfoLib
{
[Serializable]
public class RunningReport
{
private string _reportName;
private int _reportID;
private int _createdBy;
private string _discription;
private int _itemId;
private DocumentTypeEnum _outputType;
private string _printerName;
private string _trayName;
private string _emailList;
private List<ParameterNameValue_pnv;
public string ReportName
{
get { return this._reportName; }
set { this._reportName = value; }
}
public int ReportID
{
get { return this._reportID; }
set { this._reportID = value; }
}
public int CreatedBy
{
get { return this._createdBy; }
set { this._createdBy = value; }
}
public string Discription
{
get { return this._discription; }
set { this._discription = value; }
}
public int ItemId
{
get { return this._itemId; }
set { this._itemId = value; }
}
public ReportInfoLib.DocumentTypeEnum OutputType
{
get { return this._outputType; }
set { this._outputType = value; }
}
public string PrinterName
{
get { return this._printerName; }
set { this._printerName = value; }
}
public string TrayName
{
get { return this._trayName; }
set { this._trayName = value; }
}
public string EmailList
{
get { return this._emailList; }
set { this._emailList = value; }
}
public
System.Collections.Generic.List<ReportInfoLib.Para meterNameValuePnv
{
get { return this._pnv; }
set { this._pnv = value; }
}
}
} 6 2919
"Peter" <cz****@nospam.nospamwrote in message
news:uq**************@TK2MSFTNGP02.phx.gbl...
I have a WebService which returns a List of RunningReport class
How do I read this XML data on the client side. How do I convert
List<RunningReportfrom the WebService side to List<RunningReporton the
client side
Sorry, it doesn't work this way.
The client has no idea what type the server is using. Remember that the
client could be running Java, in which case, it certainly doesn't know
anything about List<RunningReport>.
What the client _does_ know about is the XML Schema that it gets from the
WSDL file that it gets from the server when you use Add Web Reference. That
schema will have a section similar to this:
<xs:element name="ArrayOfRunningReport">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" type="RunningReport"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Notice the total lack of mention of List<T>.
Using ASMX web services (which you seem to be doing), that will always
translate into RunningReport[] on the client. If you were using WCF, you'd
be able to tell it to use List<Tinstead. Since you're using the old stuff,
you'll have to fake it:
List<RunningReportreportList ; //= null; Don't do this. The
default is null, besides, it gets overwritten
localhost.ReportService localrs = new localhost.ReportService();
localrs.Url = GetServiceURL();
RunningReports[] reportsArray = localrs.RunningReports();
reportList = new List<RunningReports>(reportsArray);
--
John Saunders | MVP - Connected System Developer
"John Saunders" <no@dont.do.that.comwrote in message
news:Oc**************@TK2MSFTNGP05.phx.gbl...
"Peter" <cz****@nospam.nospamwrote in message
news:uq**************@TK2MSFTNGP02.phx.gbl...
>I have a WebService which returns a List of RunningReport class How do I read this XML data on the client side. How do I convert List<RunningReportfrom the WebService side to List<RunningReporton the client side
Sorry, it doesn't work this way.
The client has no idea what type the server is using. Remember that the
client could be running Java, in which case, it certainly doesn't know
anything about List<RunningReport>.
What the client _does_ know about is the XML Schema that it gets from the
WSDL file that it gets from the server when you use Add Web Reference.
That schema will have a section similar to this:
<xs:element name="ArrayOfRunningReport">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" type="RunningReport"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Notice the total lack of mention of List<T>.
Using ASMX web services (which you seem to be doing), that will always
translate into RunningReport[] on the client. If you were using WCF, you'd
be able to tell it to use List<Tinstead. Since you're using the old
stuff, you'll have to fake it:
List<RunningReportreportList ; //= null; Don't do this. The
default is null, besides, it gets overwritten
localhost.ReportService localrs = new localhost.ReportService();
localrs.Url = GetServiceURL();
RunningReports[] reportsArray = localrs.RunningReports();
reportList = new List<RunningReports>(reportsArray);
--
John Saunders | MVP - Connected System Developer
Thank You for your help!
This the following line does not work:
RunningReports[] reportsArray = localrs.RunningReports();
Cannot implicitly convert type 'localhost.RunningReport[]' to
'Reports.Modules.RunningJobs.RunningReport[]'
Hi Peter,
The problem you encountered, is caused by XML webservice does not expose
implement details to client(only expose WSDL service description) for
interop purpose. Therefore, for any custom types used in webservice, by
default the client-side will generate a light weight delegate class to
represent it. That's why, for your scenario, it reports the following error:
================
Cannot implicitly convert type 'localhost.RunningReport[]' to
'Reports.Modules.RunningJobs.RunningReport[]'
===============
here the "localhost.RunningReport" type is generated by the webservice
client proxy(add webreference), while
"Reports.Modules.RunningJobs.RunningReport" is your own type(the type used
at server-side).
Currently one way to overcome this problem is manually modify the
auto-generated webservice proxy's source code. You can change the return
type from the "localhost.RunningReport[]" to
"Reports.Modules.RunningJobs.RunningReport[]". The drawback of this is
when you update the webservice refefence, your change will be overwritten.
To avoid this, you can add a partial class file for the webservice clienet
proxy class, and add a new method (the same signature and attributes as the
original webmethod), and chang the return type to the one you want.
Hope this helps.
Sincerely,
Steven Cheng
Microsoft MSDN Online Support Lead
Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at: ms****@microsoft.com.
==================================================
Get notification to my posts through email? Please refer to http://msdn.microsoft.com/en-us/subs...#notifications.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
--------------------
>From: "Peter" <cz****@nospam.nospam> References: <uq**************@TK2MSFTNGP02.phx.gbl>
<Oc**************@TK2MSFTNGP05.phx.gbl>
>Subject: Re: Read WebService List<data Date: Thu, 9 Oct 2008 21:19:42 -0500
>
"John Saunders" <no@dont.do.that.comwrote in message news:Oc**************@TK2MSFTNGP05.phx.gbl...
>"Peter" <cz****@nospam.nospamwrote in message news:uq**************@TK2MSFTNGP02.phx.gbl...
>>I have a WebService which returns a List of RunningReport class How do I read this XML data on the client side. How do I convert List<RunningReportfrom the WebService side to List<RunningReporton the client side
Sorry, it doesn't work this way.
The client has no idea what type the server is using. Remember that the client could be running Java, in which case, it certainly doesn't know anything about List<RunningReport>.
What the client _does_ know about is the XML Schema that it gets from
the
>WSDL file that it gets from the server when you use Add Web Reference. That schema will have a section similar to this:
<xs:element name="ArrayOfRunningReport"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" type="RunningReport"/> </xs:sequence> </xs:complexType> </xs:element>
Notice the total lack of mention of List<T>.
Using ASMX web services (which you seem to be doing), that will always translate into RunningReport[] on the client. If you were using WCF,
you'd
>be able to tell it to use List<Tinstead. Since you're using the old stuff, you'll have to fake it:
List<RunningReportreportList ; //= null; Don't do this. The default is null, besides, it gets overwritten
localhost.ReportService localrs = new localhost.ReportService(); localrs.Url = GetServiceURL(); RunningReports[] reportsArray = localrs.RunningReports(); reportList = new List<RunningReports>(reportsArray);
-- John Saunders | MVP - Connected System Developer
Thank You for your help!
This the following line does not work: RunningReports[] reportsArray = localrs.RunningReports();
Cannot implicitly convert type 'localhost.RunningReport[]' to 'Reports.Modules.RunningJobs.RunningReport[]'
""Steven Cheng"" <st*****@online.microsoft.comwrote in message
news:hM**************@TK2MSFTNGHUB02.phx.gbl...
Hi Peter,
The problem you encountered, is caused by XML webservice does not expose
implement details to client(only expose WSDL service description) for
interop purpose. Therefore, for any custom types used in webservice, by
default the client-side will generate a light weight delegate class to
represent it. That's why, for your scenario, it reports the following
error:
================
Cannot implicitly convert type 'localhost.RunningReport[]' to
'Reports.Modules.RunningJobs.RunningReport[]'
===============
here the "localhost.RunningReport" type is generated by the webservice
client proxy(add webreference), while
"Reports.Modules.RunningJobs.RunningReport" is your own type(the type used
at server-side).
Currently one way to overcome this problem is manually modify the
auto-generated webservice proxy's source code. You can change the return
type from the "localhost.RunningReport[]" to
"Reports.Modules.RunningJobs.RunningReport[]". The drawback of this is
when you update the webservice refefence, your change will be overwritten.
To avoid this, you can add a partial class file for the webservice clienet
proxy class, and add a new method (the same signature and attributes as
the
original webmethod), and chang the return type to the one you want.
As Steven has said, this will not work, as it will be overwritten every time
you update your web reference.
The correct solution is simply to use:
localhost.RunningReports[] reportsArray = localrs.RunningReports();
--
John Saunders | MVP - Connected System Developer
"John Saunders" <no@dont.do.that.comwrote in message
news:On**************@TK2MSFTNGP06.phx.gbl...
""Steven Cheng"" <st*****@online.microsoft.comwrote in message
news:hM**************@TK2MSFTNGHUB02.phx.gbl...
>Hi Peter,
The problem you encountered, is caused by XML webservice does not expose implement details to client(only expose WSDL service description) for interop purpose. Therefore, for any custom types used in webservice, by default the client-side will generate a light weight delegate class to represent it. That's why, for your scenario, it reports the following error:
================ Cannot implicitly convert type 'localhost.RunningReport[]' to 'Reports.Modules.RunningJobs.RunningReport[]' ===============
here the "localhost.RunningReport" type is generated by the webservice client proxy(add webreference), while "Reports.Modules.RunningJobs.RunningReport" is your own type(the type used at server-side).
Currently one way to overcome this problem is manually modify the auto-generated webservice proxy's source code. You can change the return type from the "localhost.RunningReport[]" to "Reports.Modules.RunningJobs.RunningReport[]". The drawback of this is when you update the webservice refefence, your change will be overwritten. To avoid this, you can add a partial class file for the webservice clienet proxy class, and add a new method (the same signature and attributes as the original webmethod), and chang the return type to the one you want.
As Steven has said, this will not work, as it will be overwritten every
time you update your web reference.
The correct solution is simply to use:
localhost.RunningReports[] reportsArray = localrs.RunningReports();
--
John Saunders | MVP - Connected System Developer
Thank You for your help, that worked!
I also switched to WCF, which works very nice.
Hi Peter,
I'm glad that you've got it working. If there is anything else need help
later, welcome to post here.
Sincerely,
Steven Cheng
Microsoft MSDN Online Support Lead
Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at: ms****@microsoft.com.
--------------------
>From: "Peter" <cz****@nospam.nospam> References: <uq**************@TK2MSFTNGP02.phx.gbl>
<Oc**************@TK2MSFTNGP05.phx.gbl>
<eD**************@TK2MSFTNGP06.phx.gbl>
<hM**************@TK2MSFTNGHUB02.phx.gbl>
<On**************@TK2MSFTNGP06.phx.gbl>
>Subject: Re: Read WebService List<data Date: Fri, 10 Oct 2008 16:17:19 -0500
> "John Saunders" <no@dont.do.that.comwrote in message news:On**************@TK2MSFTNGP06.phx.gbl...
>""Steven Cheng"" <st*****@online.microsoft.comwrote in message news:hM**************@TK2MSFTNGHUB02.phx.gbl...
>>Hi Peter,
The problem you encountered, is caused by XML webservice does not expose implement details to client(only expose WSDL service description) for interop purpose. Therefore, for any custom types used in webservice, by default the client-side will generate a light weight delegate class to represent it. That's why, for your scenario, it reports the following error:
================ Cannot implicitly convert type 'localhost.RunningReport[]' to 'Reports.Modules.RunningJobs.RunningReport[]' ===============
here the "localhost.RunningReport" type is generated by the webservice client proxy(add webreference), while "Reports.Modules.RunningJobs.RunningReport" is your own type(the type used at server-side).
Currently one way to overcome this problem is manually modify the auto-generated webservice proxy's source code. You can change the return type from the "localhost.RunningReport[]" to "Reports.Modules.RunningJobs.RunningReport[]". The drawback of this is when you update the webservice refefence, your change will be overwritten. To avoid this, you can add a partial class file for the webservice clienet proxy class, and add a new method (the same signature and attributes as the original webmethod), and chang the return type to the one you want.
As Steven has said, this will not work, as it will be overwritten every time you update your web reference.
The correct solution is simply to use:
localhost.RunningReports[] reportsArray = localrs.RunningReports(); -- John Saunders | MVP - Connected System Developer
Thank You for your help, that worked!
I also switched to WCF, which works very nice. This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Dave |
last post by:
Hello all,
After perusing the Standard, I believe it is true to say that once you
insert an element into a std::list<>, its location in memory never changes.
This makes a std::list<> ideal for...
|
by: matty.hall |
last post by:
I have two classes: a base class (BaseClass) and a class deriving from
it (DerivedClass). I have a List<DerivedClass> that for various
reasons needs to be of that type, and not a List<BaseClass>....
|
by: Iron Moped |
last post by:
I'm airing frustration here, but why does LinkedList<not support the
same sort and search methods as List<>? I want a container that does not
support random access, allows forward and reverse...
|
by: Andrew Robinson |
last post by:
I have a method that needs to return either a Dictionary<k,vor a List<v>
depending on input parameters and options to the method.
1. Is there any way to convert from a dictionary to a list...
|
by: SC |
last post by:
How do I create at runtime a list of string (List<stringstrs = new
List<string>(); fill it) and then bind it to a DataGridViewColumnBox?
Setting the columns DataSource to the list doesn't...
|
by: Lee Crabtree |
last post by:
This seems inconsistent and more than a little bizarre.
Array.Clear sets all elements of the array to their default values (0,
null, whatever), whereas List<>.Clear removes all items from the...
|
by: csharpula csharp |
last post by:
Hello,
I would like to know what is better for data binding and serialization
purposes ArrayList or List<? Thank you!
*** Sent via Developersdex http://www.developersdex.com ***
|
by: muquaddim |
last post by:
Hello,
I have a xml file like the following.
<?xml version="1.0">
<data>
<idef units="Vin,Vout,E">
<i id="i1">
<sample num="1">
<sampledata value="2;3;7" />
</sample>
|
by: =?Utf-8?B?SkI=?= |
last post by:
Hello
List<Tis said to be more powerful than ArrayLists but if you have
something like this:
List<intmylst = new List<>;
myList.Add("Joe");
myList.Add(25);
the list doesn't seem to...
|
by: CloudSolutions |
last post by:
Introduction:
For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome former...
|
by: ryjfgjl |
last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
|
by: taylorcarr |
last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
| |