Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 26959|Odpoveď: 0

[Zdroj] Java volania na webový server C# nedokážu rozpoznať hodnotu HTTP hlavičky SOAPAction

[Kopírovať odkaz]
Zverejnené 4.3.2021 o 13:19:39 | | | |
Prečo server, ktorý volá C#, nerozpoznáva hodnotu http hlavičky SOAPAction a vždy dovolí C# ju zmeniť, len preto, že C# potrebuje pridať značku, prečo JAVA nemôže špecifikovať požiadavku na akciu?



Publikovanie a volanie Webservice je veľmi jednoduché, ale stále existujú menšie problémy, ktoré sú zhrnuté nasledovne:

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

Riešenie:

Pri volaní webovej služby sa nešpecifikuje SoapAction, ani RequestNameSpace, takže pri požiadavke sa vždy zobrazí "Server nerozpoznal hodnotu HTTP hlavičky SOAPAction".

Ak používate volania Axis, volajte ich nasledovne:


public static void main(String[] args) hodí výnimku {  
    Nepriniesť to? Prípona WSDL
    Koncový bod reťazca = "http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx";
  Vytvorte servisný hovor     
  Služba = nová služba();
  Vytvoriť volací objekt cez službu
  Call call = (Call) service.createCall();   
  Nastavte URL, kde sa služba nachádza   
  call.setTargetEndpointAddress(new java.net.URL(endpoint));   
  qqCheckOnline je metóda "http://WebXml.com.cn/" na strane internetu, ktorá tiež sleduje adresu menného priestoru a tiež hlási chybu, ak ju neprinesiete
  call.setOperationName(new QName("http://WebXml.com.cn/","qqCheckOnline"));
  qqCode je tiež názov parametra metódy .NET, ktorý je názvom parametra qqCheckOnline
  call.addParameter(new QName("http://WebXml.com.cn/","qqCode"),
         org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
  Vyhnite sa volaniu webovej služby .net od Javy s chybou "Server nerozpoznal hodnotu HTTP hlavičky SOAPAction"
  call.setUseSOAPAction(true);
  call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); Typ vráteného parametra
  call.setSOAPActionURI("http://WebXml.com.cn/qqCheckOnline"); Treba tiež poznamenať, že je potrebné pridať metódu, ktorá sa volá, inak sa tiež nahlási chyba
  Objektové polia zapuzdrujú parametre     
  String ret = (String) call.invoke(new Object[] {"aaaaa"});   
  System.out.println("--------"+ret);
    }

Všimnite si sekciu komentárov.

Prihlásenie na hypertextový odkaz je viditeľné.? WSDL znamená Public Web Service

Nasledujúca výnimka nastáva, keď wsdl2java.bat používajúci CXF vygeneruje klienta na publikovanie .net webovej služby na základe wsdl súboru


( deklarácia nedefinovaného prvku 'S:Schema')

Riešenie:

Otvorte wsdl.xml a použite


<s:any minOccurs="2" maxOccurs="2"/>Alternate <s:element ref="s:schema" /><s:any />
Táto chyba generovania wsdl2java by mala súvisieť s tým, že JAXB nepodporuje xml refs, pretože <s:any minOccurs="2" maxOccurs="2"/> a <s:element ref="s:schema" /><s:any/> sú v skutočnosti ekvivalentné. <s:element ref="s:schema" /> v skutočnosti znamená, že môžete použiť akýkoľvek typ prvku špecifikovaný s:schema tu, <s:any /> hrá túto úlohu, <s:any minOccurs="2" maxOccurs="2"/> je len dva <s:any />

Bolo to napísané v jednej vete.

referenciaPrihlásenie na hypertextový odkaz je viditeľné.

Použitie CXF wsdl2java.bat generuje superchybu kompilácie klienta na základe súboru wsdl

Riešenie:

Nekompiluje sa správne, pretože špecifikácia jax-ws2.2 je v konflikte s java6.

Program však nemožno kompilovať iba v java5, preto je potrebné znížiť verziu špecifikácie jax-ws, ktorú možno riešiť takto: Spustiť príkaz

WSDL2Java -frontend jaxws21 -client *.xml

Týmto spôsobom je možné kód generovaný v jax-ws2.1 skompilovať a vykonať v java6.

Porovnal som klientský kód generovaný týmto nástrojom s porovnávaním textu a zistil som, že porovnávanie textu generovalo ďalšie 3 klientské kódy, takže odstránenie 3 konštruktorov, ktoré hlásili chyby, môže tiež vyriešiť vyššie uvedené problémy.

Prevzaté z:Prihlásenie na hypertextový odkaz je viditeľné.




Predchádzajúci:.NET/C# používa BenchmarkDotNet na testovanie výkonu kódu
Budúci:Volanie rozhrania Consul HTTP API
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com