Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 26959|Antwort: 0

[Quelle] Java-Aufrufe zum C#-Webservice-Server erkennen den Wert des HTTP-Headers SOAPAction nicht

[Link kopieren]
Veröffentlicht am 04.03.2021, 13:19:39 | | | |
Warum erkennt der Webservice-Reporting-Server, der C# aufruft, den Wert des HTTP-Headers SOAPAction nicht und lässt C# ihn immer ändern? Nur weil C# nur ein Tag hinzufügen muss, warum kann JAVA dann keine Aktionsanfrage angeben?



Das Veröffentlichen und Aufrufen von Webdiensten ist sehr einfach, aber es gibt immer noch kleinere Probleme, die wie folgt zusammengefasst sind:

Java ruft .nets WebService mit dem Fehler "Server failed to recognize the value of HTTP header SOAPAction" auf.

Lösung:

Beim Aufrufen des Webservices wird kein SoapAction angegeben, kein RequestNameSpace angegeben, sodass bei der Anfrage immer "Der Server hat den Wert des HTTP-Headers SOAPAction nicht erkannt".

Wenn Achsenaufrufe verwendet werden, rufen Sie sie wie folgt auf:


public static void main(String[] args) wirft Exception {  
    Nicht mitbringen? WSDL-Suffix
    String-Endpunkt = "http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx";
  Erstellen Sie einen Serviceaufruf     
  Servicedienst = neuer Service();
  Erstellen Sie ein Aufrufobjekt über Service
  Call Call = (Call) service.createCall();   
  Setze die URL dort, wo sich der Dienst befindet   
  call.setTargetEndpointAddress(new java.net.URL(endpoint));   
  qqCheckOnline ist die Methode "http://WebXml.com.cn/" auf der Netzseite, die auch auf die Adresse des Namespace achtet und ebenfalls einen Fehler meldet, wenn man ihn nicht mitbringt
  call.setOperationName(neuer QName("http://WebXml.com.cn/","qqCheckOnline"));
  qqCode ist auch der Parametername der .NET-Methode, die der Parametername von qqCheckOnline ist
  call.addParameter(new QName("http://WebXml.com.cn/","qqCode"),
         org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
  Vermeiden Sie, dass Java .nets WebService mit dem Fehler "Der Server hat den Wert des HTTP-Headers SOAPAction nicht erkannt" aufruft.
  call.setUseSOAPAction(true);
  call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); Der Typ des zurückgegebenen Parameters
  call.setSOAPActionURI("http://WebXml.com.cn/qqCheckOnline"); Es sollte auch beachtet werden, dass Sie die aufzurufende Methode hinzufügen müssen, sonst wird auch ein Fehler gemeldet
  Objektarrays kapseln die Parameter     
  String ret = (String) call.invoke(new Object[] {"aaaaa"});   
  System.out.println("--------"+ret);
    }

Beachten Sie den Kommentarbereich.

Der Hyperlink-Login ist sichtbar.? WSDL steht für Public Web Service (Public Web Service)

Die folgende Ausnahme tritt auf, wenn der wsdl2java.bat mit CXF einen Client generiert, der einen .net-Webservice basierend auf einer wsdl-Datei veröffentlicht.


(undefinierte Elementdeklaration 's:schema')

Lösung:

Öffne die wsdl.xml und benutze


<s:any minOccurs="2" maxOccurs="2"/>Alternate <s:element ref="s:schema" /><s:any />
Dieser wsdl2java-Generierungsfehler sollte damit zusammenhängen, dass JAXB XML-Referenzen nicht unterstützt, da <s:any minOccurs="2" maxOccurs="2"/> und <s:element ref="s:schema" /><s:any/> tatsächlich äquivalent sind. <s:element ref="s:schema" /> bedeutet tatsächlich, dass man hier jeden von s:schema angegebenen Elementtyp verwenden kann, <s:any /> spielt diese Rolle, <s:any minOccurs="2" maxOccurs="2"/> ist einfach zwei <s:any />

Es stand einfach in einem Satz geschrieben.

ReferenzDer Hyperlink-Login ist sichtbar.

Die Verwendung von CXFs wsdl2java.bat erzeugt einen Superfehler bei der Client-Kompilierung basierend auf der wsdl-Datei

Lösung:

Sie kompiliert nicht richtig, da die jax-ws2.2-Spezifikation mit java6 kollidiert.

Das Programm kann jedoch nicht nur in java5 kompiliert werden, daher ist es notwendig, die jax-ws-Spezifikationsversion zu reduzieren, die so gehandhabt werden kann: Ausführung des Befehls

wsdl2java -frontend jaxws21 -client *.xml

Auf diese Weise kann der mit jax-ws2.1 generierte Code kompiliert und in java6 ausgeführt werden.

Ich habe den vom Tool generierten Client-Code mit dem Textvergleich verglichen und festgestellt, dass letzterer drei weitere Client-Code generierte, sodass das Entfernen der drei fehlermeldeten Konstruktoren die oben genannten Probleme ebenfalls lösen kann.

Nachdruck von:Der Hyperlink-Login ist sichtbar.




Vorhergehend:.NET/C# verwendet BenchmarkDotNet, um die Code-Performance zu testen
Nächster:Consul HTTP API-Schnittstellenaufruf
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com