Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 26959|Svar: 0

[Kilde] Java-kald til C# webservice-serveren kan ikke genkende værdien af HTTP-headeren SOAPAction

[Kopier link]
Opslået den 4-3-2021 13:19:39 | | | |
Hvorfor kan webservice-rapporteringsserveren, der kalder C#, ikke genkende værdien af http-headeren SOAPAction og lader altid C# ændre den? Bare fordi C# kun behøver at tilføje et tag, hvorfor kan JAVA så ikke specificere en handlingsanmodning?



Publicering og kald Webservice er meget enkelt, men der er stadig mindre problemer, som opsummeres således:

Java kalder .nets webService med fejlen "Server failed to recognise the value of HTTP header SOAPAction".

Opløsning:

Når webservice kaldes, specificeres der ingen SoapAction, ingen RequestNameSpace angives, så "Serveren kunne ikke genkende værdien af HTTP-headeren SOAPAction" vises altid ved anmodning.

Hvis du bruger aksekald, kald dem som følger:


offentlig statisk void main(String[] args) kaster Undtagelse {  
    Ikke med? WSDL-suffiks
    Strengendepunkt = "http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx";
  Opret et serviceopkald     
  Serviceservice = ny Service();
  Opret et kaldobjekt gennem service
  Call call = (Call) service.createCall();   
  Indstil URL'en, hvor tjenesten er placeret   
  call.setTargetEndpointAddress(ny java.net.URL(endpoint));   
  qqCheckOnline er metoden "http://WebXml.com.cn/" på netsiden, som også holder øje med adressen på navneområdet og også vil rapportere en fejl, hvis du ikke bringer den
  call.setOperationName(ny QName("http://WebXml.com.cn/","qqCheckOnline"));
  qqCode er også parameternavnet for .NET-metoden, som er parameternavnet for qqCheckOnline
  call.addParameter(new QName("http://WebXml.com.cn/","qqCode"),
         org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
  Undgå at Java kalder .nets webService med fejlen "Serveren kunne ikke genkende værdien af HTTP-headeren SOAPAction"
  call.setUseSOAPAction(true);
  call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); Typen af parameter, der returneres
  call.setSOAPActionURI("http://WebXml.com.cn/qqCheckOnline"); Det skal også bemærkes, at du skal tilføje den metode, der skal kaldes, ellers vil der også blive rapporteret en fejl
  Objektarrays indkapsler parametrene     
  String ret = (String) call.invoke(new Object[] {"aaaaa"});   
  System.out.println("--------"+ret);
    }

Bemærk kommentarfeltet.

Hyperlink-login er synlig.? WSDL står for Public Web Service (Public Web Service)

Følgende undtagelse opstår, når wsdl2java.bat bruger CXF genererer en klient til at udgive en .net-webservice baseret på en wsdl-fil


(udefineret elementdeklaration 's:schema')

Opløsning:

Åbn wsdl.xml og brug


<s:any minOccurs="2" maxOccurs="2"/>Alternate <s:element ref="s:schema" /><s:any />
Denne wsdl2java-genereringsfejl bør være relateret til, at JAXB ikke understøtter xml-referencer, fordi <s:any minOccurs="2" maxOccurs="2"/> og <s:element ref="s:schema" /><s:any/> faktisk er ækvivalente. <s:element ref="s:schema" /> betyder faktisk, at du kan bruge enhver elementtype, der er specificeret af s:schema her, <s:any /> spiller denne rolle, <s:any minOccurs="2" maxOccurs="2"/> er bare to <s:any />

Det var bare skrevet i én sætning.

henvisningHyperlink-login er synlig.

Ved at bruge CXF's wsdl2java.bat genereres en klientkompilerings-superfejl baseret på wsdl-filen

Opløsning:

Den kompilerer ikke korrekt, fordi jax-ws2.2-specifikationen er i konflikt med java6.

Programmet kan dog ikke kun kompileres i java5, så det er nødvendigt at sænke jax-ws-specifikationsversionen, som kan håndteres således: Udfør kommandoen

wsdl2java -frontend jaxws21 -client *.xml

På denne måde kan koden, der genereres med jax-ws2.1, kompileres og køres i java6.

Jeg sammenlignede klientkoden genereret af værktøjet med tekstsammenligning og fandt, at sidstnævnte genererede 3 flere klientkoder, så fjernelse af de 3 konstruktører, der rapporterede fejl, kan også løse ovenstående problemer.

Genoptrykt fra:Hyperlink-login er synlig.




Tidligere:.NET/C# bruger BenchmarkDotNet til at teste kodeydelse
Næste:Consul HTTP API-interfacekald
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com