Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 26959|Antwoord: 0

[Bron] Java-aanroepen naar de C#-webserviceserver herkennen de waarde van de HTTP-header SOAPAction niet

[Link kopiëren]
Geplaatst op 4-3-2021 13:19:39 | | | |
Waarom herkent de webservice-rapportageserver die C# aanroept de waarde van de http-header SOAPAction niet en laat C# die altijd wijzigen? Alleen omdat C# alleen een tag hoeft toe te voegen, waarom kan JAVA dan geen actieverzoek specificeren?



Het publiceren en aanroepen van een webservice is heel eenvoudig, maar er zijn nog steeds kleine problemen, die als volgt worden samengevat:

Java roept .net's webService aan met een fout "Server couldn't recognize the value of HTTP header SOAPAction".

Oplossing:

Bij het aanroepen van webservice wordt geen SoapAction gespecificeerd, geen RequestNameSpace gespecificeerd, dus "De server heeft de waarde van de HTTP-header SOAPAction niet herkend" verschijnt altijd bij het aanvragen.

Als je Axis calls gebruikt, roep ze dan als volgt:


publieke statische void main(String[] args) werpt Exception {  
    Niet meenemen? WSDL-achtervoegsel
    String-eindpunt = "http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx";
  Maak een serviceoproep aan     
  Servicedienst = nieuwe Service();
  Maak een aanroepobject aan via service
  Call call = (Call) service.createCall();   
  Stel de URL in waar de dienst zich bevindt   
  call.setTargetEndpointAddress(new java.net.URL(endpoint));   
  qqCheckOnline is de methode "http://WebXml.com.cn/" aan de netzijde, die ook let op het adres van de naamruimte en ook een foutmelding zal melden als je deze niet aanbrengt.
  call.setOperationName(nieuwe QName("http://WebXml.com.cn/","qqCheckOnline"));
  qqCode is ook de parameternaam van de .NET-methode, wat de parameternaam is van qqCheckOnline
  call.addParameter(nieuwe QName("http://WebXml.com.cn/","qqCode"),
         org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
  Vermijd dat Java .net's webService aanroept met de foutmelding "De server herkende de waarde van de HTTP-header SOAPAction niet"
  call.setUseSOAPAction(true);
  call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); Het type parameter dat wordt teruggegeven
  call.setSOAPActionURI("http://WebXml.com.cn/qqCheckOnline"); Dit moet ook worden opgemerkt dat je de te roepen methode moet toevoegen, anders wordt er ook een fout gerapporteerd
  Objectarrays kapselen de parameters in     
  String ret = (String) call.invoke(new Object[] {"aaaaa"});   
  System.out.println("--------"+ret);
    }

Let op de reactiesectie.

De hyperlink-login is zichtbaar.? WSDL staat voor Public Web Service (Public Web Service)

De volgende uitzondering treedt op wanneer de wsdl2java.bat die CXF gebruikt een client genereert om een .net-webservice te publiceren gebaseerd op een wsdl-bestand


( ongedefinieerde elementverklaring 's:schema')

Oplossing:

Open de wsdl.xml en gebruik


<s:any minOccurs="2" maxOccurs="2"/>Alternate <s:element ref="s:schema" /><s:any />
Deze wsdl2java-generatiefout zou gerelateerd moeten zijn aan het feit dat JAXB geen xml-referenties ondersteunt, omdat <s:any minOccurs="2" maxOccurs="2"/> en <s:element ref="s:schema" /><s:any/> eigenlijk equivalent zijn. <s:element ref="s:schema" /> betekent eigenlijk dat je elk elementtype kunt gebruiken dat door s:schema is gespecificeerd, <s:elke /> speelt deze rol, <s:elke minOccurs="2" maxOccurs="2"/> is gewoon twee <s:elke />

Het stond gewoon in één zin geschreven.

referentieDe hyperlink-login is zichtbaar.

Met behulp van CXF's wsdl2java.bat genereert een clientcompilatie-superfout op basis van het wsdl-bestand

Oplossing:

Het compileert niet correct omdat de jax-ws2.2-specificatie conflicteert met java6.

Het programma kan echter niet alleen in java5 worden gecompileerd, dus is het noodzakelijk om de jax-ws-specificatieversie te verlagen, die als volgt kan worden afgehandeld: Voer het commando uit

wsdl2java -frontend jaxws21 -client *.xml

Op deze manier kan de code die met jax-ws2.1 is gegenereerd, worden gecompileerd en uitgevoerd in java6.

Ik heb de clientcode die door de tool wordt gegenereerd vergeleken met tekstvergelijking en ontdekte dat die laatste 3 extra clientcode genereerde, dus het verwijderen van de 3 constructors die fouten rapporteerden kan ook bovenstaande problemen oplossen.

Herdrukt van:De hyperlink-login is zichtbaar.




Vorig:.NET/C# gebruikt BenchmarkDotNet om codeprestaties te testen
Volgend:Consul HTTP API-interface-aanroep
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com