Avatar billede telep Nybegynder
20. august 2008 - 09:49 Der er 13 kommentarer og
1 løsning

.NET webservice fra Java code

Hejsa,

Jeg har en webservice, der er skrevet i .NET. Den virker som den skal og jeg kan sagtens bruge den fra andre .NET applikationer.

Nu skal jeg så lave en java applikation hvor jeg også gerne vil kunne bruge min .NET webservice.

Jeg har desværre ingen anelse om hvordan jeg skal gøre.
Er der nogen der kan hjælpe?
Avatar billede arne_v Ekspert
20. august 2008 - 15:05 #1
Grundliggende foer du ligesom i .NET !

version A)

I Eclipse/NetBeans vaelger du "import web service" eller hvad de nu kalder den og
giver den URL paa WSDL, saa faar du en web service klasse som du bare kalder helt normalt.

version B)

Du henter et web service toolkit (f.eks. Axis eller Axis2) eller bruger det indbyggede
i Java 1.6 og genererer en stub via command line tool eller ant som du bare kalder helt normalt.
Avatar billede arne_v Ekspert
20. august 2008 - 15:05 #2
Og hvis din web service bruger .NET specifikke data typer kan du rende ind i nogen problemer !!
Avatar billede telep Nybegynder
21. august 2008 - 13:51 #3
OK

Så fik jeg hul til webservicen, det var jo nemt nok, når man lige fandt de rigtige knapper :-)

OG

så har du jo helt ret i datatyperne...
Jeg vil meget gerne kunne overføre et obeject af typen "testClass".

    public class testClass
    {
        private int tal;
        private string text;

        public testClass()
        {
        }

        public void setValues(int t, string s)
        {
            tal = t;
            text = s;
        }

        public int getTal()
        {
            return tal;
        }

        public string getText()
        {
            return text;
        }
    }



jeg har så en tilsvarende klasse i min JAVA kode:

public class testClass
{
    private int tal;
    private String text;
   
    public testClass()
    {
       
    }
   
    public void setValues(int t, String s)
    {
        tal = t;
        text = s;
    }
   
    public int getTal()
    {
        return tal;
    }

    public String getText()
    {
        return text;
    }
}

så vil jeg gerne kunne sige (JAVA kode)

testClass t = new testClass();
t = service2.getDbAccessSoap().getTestClass();

jeg har en WebMethod (.NET)
        [WebMethod]
        public testClass getTestClass()
        {
            testClass t = new testClass();
            t.setValues(1, "tekst");

            return obj;
        }


Er dette muligt?

Alternativt vil jeg gerne kunne overføre et array af typen obejct...

Jeg har netop afprøvet begge ting. Overførsel af "testClass" går slet ikke... det lader til at den XML der bliver overført slet ikke indeholder data..
Mht. et array af object lader det til at datatypen object i .NET ikke er lig med Object i JAVA.

Sagens kerne er selvfølgelig, at jeg har en samling data jeg gerne vil have overført ved et webservice kald.
Avatar billede arne_v Ekspert
21. august 2008 - 22:18 #4
Lav din TestClass i C# med properties - ikke med get og set.

Undlad at lav klassen i Java.

Naar du saa genererer stub i Java, saa vil du faa baade webservicen *og* en
testClass med get og set metoder.
Avatar billede telep Nybegynder
22. august 2008 - 10:35 #5
OK

Hvad mener du med

"Naar du saa genererer stub i Java" ?

tak
Avatar billede arne_v Ekspert
22. august 2008 - 14:48 #6
tilfoej web service i Eclipse / tilfoej web service i NetBeans / koer WSDL2Java i command prompt / koer WSDL2Java i ant
eller hvordan du nu goer det
Avatar billede telep Nybegynder
22. august 2008 - 14:56 #7
ok - det prøver jeg lige.
Avatar billede telep Nybegynder
22. august 2008 - 15:05 #8
hmmm...

WSDL2Java???

Jeg bruger Netbeans IDE 6.1.

Jeg kan ikke umiddelbart referere min .NET testClass.
Avatar billede arne_v Ekspert
22. august 2008 - 15:18 #9
Du goer "et eller andet" i NetBeans hvor du giver den URL paa WSDL.

NetBeans genererer saa en Java klasse der repraesenterer web servicen. Samme sted skulle
der herne vaere de data klasser som bruges af web servicen.
Avatar billede telep Nybegynder
22. august 2008 - 15:36 #10
Jeg har java klassen om repræsenterer webservicen, og jeg kan også sagtens kalde den og få svar.
Men jeg kan ikke referere min .NET klasse

Her har du min .NET klasse

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace webstest
{
    public class test
    {
        private string text;
        private int tal;

        public int pTal
        {
            get { return tal; }
            set { tal = value; }
        }

        public string pText
        {
            get { return text; }
            set { text = value; }
        }

        public test()
        {
            text = "troels";
            tal = 6;
        }
    }
}
Avatar billede arne_v Ekspert
22. august 2008 - 16:29 #11
Hvis du kalder din web service stub (den Java kode der repraesenterer web service
paa Java siden) saa farr du da noget tilbage.

Jeg forventer at du kan skrive:

Test o = webserviceobject.getTest();
System.out.println(o.getPTal() + " " + o.getPText());

Jeg er ikke helt sikker paa store og smaa bogstaver - det maa du lige checke.
Avatar billede telep Nybegynder
25. august 2008 - 13:19 #12
Takker mange gange. Det virker præcis som det skal.
Avatar billede arne_v Ekspert
25. august 2008 - 14:49 #13
Det vanskeligste ved brug af web services er at man nemt kan tror at det er mere vanskeligt
end det er !

Jeg smider et svar.
Avatar billede telep Nybegynder
26. august 2008 - 16:23 #14
ja det var sgu bare et stykke af en kage .-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester