up vote 1 down vote favorite

In my C# program, I would like to consume the Java Web Service Method which replies the java.Util.ArrayList. I don't know how to convert the Java ArrayList to C# ArrayList.

This is Java Codes

@WebMethod
@WebResult(name = "GetLastMessages")
@SuppressWarnings("unchecked")
public ArrayList<Message> getLastMessages(@WebParam(name = "MessageCount")int count) {
    ....
            ....
    return messages;
}

This is C# Codes

MessagesService.MessagesService service = new MessagesService.MessagesService();
System.Collections.ArrayList arr = (System.Collections.ArrayList)service.getLastMessages(10);

I got the following Error in C#

Cannot convert type 'WindowsFormsApplication1.MessagesService.arrayList' to 'System.Collections.ArrayList'  

How can I cast these Java ArrayList to C# ArrayList

flag

77% accept rate

2 Answers

up vote 1 down vote accepted

That is definitely not a Java class written with Web Service interoperability in mind (nor is it really that good of a Java method - it should be returning List, not ArrayList). If you can change it, try changing it to an array (return type: Message[]). Very easy to do, just change the return line to read:

  return messages.toArray(new Message[0]);

I think that will just lead you right back to SO asking what to do with that Message class (did I mention this was not written with Web Service interoperability in mind?), even assuming the array goes smoothly (it may not).

If you can't change the Java class, you are probably very out of luck, but you would have to call the web service and get the raw XML and see what you can do about parsing it to know what your options are.

link|flag
up vote 0 down vote

An ArrayList in Java and an ArrayList in C# are very different things, you need to share the data in a format that can easily be understood by both parties, e.g. XML.

link|flag

Your Answer

get an OpenID
or
never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.