Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 26959|Válasz: 0

[Forrás] A Java hívások a C# webszolgáltatás szerverére nem ismerik fel a HTTP fejléc SOAPAction értékét

[Linket másol]
Közzétéve: 2021-3-4 13:19:39 | | | |
Miért nem ismeri fel a webszolgáltatás jelentési szerver, amely C#-et hív, a http fejléc SOAPAction értékét, és miért hagyja mindig a C# megváltoztatni, csak mert C#-nak csak címkét kell hozzáadnia, miért nem tud JAVA cselekvési kérést megadni?



A Webszolgáltatás közzététele és hívása nagyon egyszerű, de még mindig vannak kisebb problémák, amelyeket a következőképpen összefoglalnak:

A Java a .net webservice-ét "Server nem ismerte fel a HTTP fejléc SOAPAction értékét" hibával hívja meg.

Megoldás:

Webservice híváskor nincs megadva SoapAction, nincs RequestNameSpace (RequestNameSpace), így a "A szerver nem ismerte fel a HTTP fejléc SOAPAction értékét" mindig megjelenik kéréskor.

Ha tengelyhívásokat használunk, hívjuk őket a következőként:


public static void main(String[] args) dob Exception {  
    Nem hozod magad? WSDL utótag
    String endpoint = "http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx";
  Hozz létre szolgáltatási hívást     
  Szolgálat = új Szolgálat();
  Hozz létre hívásobjektumot szolgáltatáson keresztül
  Call call = (Call) service.createCall();   
  Állítsd be az URL-t, ahol a szolgáltatás található   
  call.setTargetEndpointAddress(new java.net.URL(endpoint));   
  qqCheckOnline a "http://WebXml.com.cn/" módszer a hálózati oldalon, amely figyeli a névtér címét is, és hibát jelent, ha nem hozod be.
  call.setOperationName(new QName("http://WebXml.com.cn/","qqCheckOnline"));
  a qqCode a .NET metódus paraméterneve is, amely a qqCheckOnline paraméterneve
  call.addParameter(new QName("http://WebXml.com.cn/","qqCode"),
         org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
  Kerüld el, hogy a Java a .net webservice-ét hívja a "A szerver nem ismerte fel a HTTP fejléc SOAPAction értékét" hibával.
  call.setUseSOAPAction(true);
  call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); A visszaadott paraméter típusa
  call.setSOAPActionURI("http://WebXml.com.cn/qqCheckOnline"); Ezt is meg kell jegyezni, hogy hozzá kell adni a hívandó metódust, különben hibát is jelentenek
  Az objektumtömbök kapszulázzák a paramétereket     
  String ret = (String) call.invoke(új objektum[] {"aaaaa"});   
  System.out.println("--------"+ret);
    }

Figyeld meg a hozzászólások szekciót.

A hiperlink bejelentkezés látható.? A WSDL a Public Web Service rövidítése

A következő kivétel akkor fordul elő, amikor a CXF-et használó wsdl2java.bat egy klienst generál, amely egy .net webszolgáltatást jelent meg egy wsdl fájl alapján.


( definiálatlan elem deklaráció 's:séma')

Megoldás:

Nyisd ki a wsdl.xml és használd


<s:any minOccurs="2" maxOccurs="2"/>Alternate <s:element ref="s:schema" /><s:any />
Ez a wsdl2java generáló hiba ahhoz kapcsolódik, hogy a JAXB nem támogatja az xml refeket, mert a <s:any minOccurs="2" maxOccurs="2"/> és <s:element ref="s:schema" /><s:any/> valójában ekvivalensek. <s:element ref="s:schema" /> valójában azt jelenti, hogy itt az s:schema által meghatározott elemtípust használhatsz, <s:any /> ezt a szerepet tölti be, <s:any minOccurs="2" maxOccurs="2"/> csak két <s:any />

Csak egy mondatban volt leírva.

utalásA hiperlink bejelentkezés látható.

A CXF wsdl2java.bat használatával egy kliens fordítási szuperhibát generálnak a wsdl fájl alapján

Megoldás:

Nem fordítja meg megfelelően, mert a jax-ws2.2 specifikáció ütközik a java6-tal.

Azonban a programot nem lehet csak java5-ben fordítani, ezért a jax-ws specifikációs verziót kell csökkenteni, amely így kezelhető: A parancs végrehajtása

wsdl2java -frontend jaxws21 -client *.xml

Így a jax-ws2.1-ben generált kód lefordítható és végrehajtható java6-ban.

Összehasonlítottam az eszköz által generált kliens kódot a szöveges összehasonlítással, és azt találtam, hogy az utóbbi további 3 klienskódot generált, így a hibákat jelentő három konstruktor eltávolítása is megoldhatja a fenti problémákat.

Átadott forrás:A hiperlink bejelentkezés látható.




Előző:.NET/C# a BenchmarkDotNet-et használja a kód teljesítményének tesztelésére
Következő:Consul HTTP API interfész hívás
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com