Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 26959|Odpověď: 0

[Zdroj] Java volání na serveru webové služby C# nedokáže rozpoznat hodnotu HTTP hlavičky SOAPAction

[Kopírovat odkaz]
Zveřejněno 4. března 2021 13:19:39 | | | |
Proč server pro hlášení webových služeb, který volá C#, nerozpozná hodnotu http hlavičky SOAPAction a vždy nechá C# ji změnit, jen proto, že C# potřebuje přidat tag, proč JAVA nemůže specifikovat požadavek na akci?



Publikování a volání Webservice je velmi jednoduché, ale stále existují drobné problémy, které jsou shrnuty následovně:

Java volá webslužbu .net s chybou "Server nerozpoznal hodnotu HTTP hlavičky SOAPAction".

Řešení:

Při volání webové služby není specifikována žádná SoapAction, není specifikován žádný RequestNameSpace, takže při žádosti se vždy zobrazí "Server nerozpoznal hodnotu HTTP hlavičky SOAPAction".

Pokud používáte volání Axis, volejte je následovně:


public static void main(String[] args) hází Výjimka {  
    Nepřinášíš? Přípona WSDL
    Koncový bod řetězce = "http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx";
  Vytvořte servisní hovor     
  Služba = nová služba();
  Vytvořte volací objekt prostřednictvím služby
  Volání volání = (Volání) service.createCall();   
  Nastavte URL, kde se služba nachází   
  call.setTargetEndpointAddress(new java.net.URL(endpoint));   
  qqCheckOnline je metoda "http://WebXml.com.cn/" na straně sítě, která také sleduje adresu jmenného prostoru a také hlásí chybu, pokud ji nepřinesete
  call.setOperationName(new QName("http://WebXml.com.cn/","qqCheckOnline"));
  qqCode je také název parametru metody .NET, což je název parametru qqCheckOnline
  call.addParameter(new QName("http://WebXml.com.cn/","qqCode"),
         org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
  Vyhněte se volání webové služby .net pomocí chyby "Server nerozpoznal hodnotu HTTP hlavičky SOAPAction"
  call.setUseSOAPAction(true);
  call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); Typ parametru vráceného
  call.setSOAPActionURI("http://WebXml.com.cn/qqCheckOnline"); Je také třeba poznamenat, že musíte přidat metodu, kterou voláte, jinak bude také hlášena chyba
  Objektová pole zapouzdřují parametry     
  String ret = (String) call.invoke(new Object[] {"aaaaa"});   
  System.out.println("--------"+ret);
    }

Všimněte si sekce komentářů.

Přihlášení k hypertextovému odkazu je viditelné.? WSDL znamená Public Web Service

Následující výjimka nastává, když wsdl2java.bat používající CXF vygeneruje klienta pro publikaci .net webové služby založené na souboru wsdl


( deklarace nedefinovaného prvku 'S:Schema')

Řešení:

Otevřete wsdl.xml a použijte


<s:any minOccurs="2" maxOccurs="2"/>Alternate <s:element ref="s:schema" /><s:any />
Tato chyba generování wsdl2java by měla souviset s tím, že JAXB nepodporuje xml refs, protože <s:any minOccurs="2" maxOccurs="2"/> a <s:element ref="s:schema" /><s:any/> jsou ve skutečnosti ekvivalentní. <s:element ref="s:schema" /> ve skutečnosti znamená, že zde můžete použít jakýkoli typ prvku specifikovaný s:schema, <s:any /> tuto roli hraje, <s:any minOccurs="2" maxOccurs="2"/> je jen dva <s:any />

Bylo to napsáno v jedné větě.

odkazPřihlášení k hypertextovému odkazu je viditelné.

Použití wsdl2java.bat CXF generuje superchybu kompilace klienta na základě souboru wsdl

Řešení:

Nekompiluje se správně, protože specifikace jax-ws2.2 je v konfliktu s java6.

Program však nelze zkompilovat pouze v java5, proto je nutné snížit specifikaci jax-ws, což lze řešit takto: Spustit příkaz

WSDL2Java -frontend jaxws21 -client *.xml

Tímto způsobem lze kód generovaný pomocí jax-ws2.1 zkompilovat a spustit v java6.

Porovnal jsem klientský kód generovaný nástrojem s porovnáním textu a zjistil jsem, že porovnání vygenerovalo ještě 3 klientské kódy, takže odstranění 3 konstruktorů, které hlásily chyby, může také vyřešit výše uvedené problémy.

Přetištěno z:Přihlášení k hypertextovému odkazu je viditelné.




Předchozí:.NET/C# používá BenchmarkDotNet k testování výkonu kódu
Další:Volání rozhraní Consul HTTP API
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com