JAVA로 작성된 SOAP 서버에 문제가 있습니다.이 프로젝트는 웹 서비스 (예 : GLASSFISH)가 아닌 Windows 서비스로 실행됩니다. 그래서 문제는 C# .NET 클라이언트에서 요청할 때마다 JAVA SOAP 서버가 요청을 구문 분석 할 수 없다는 것입니다. 호출 된 함수는 입력 매개 변수로서 NULL 값을 가져옵니다.JAVA의 SOAP 서버 <-> C#의 SOAP 클라이언트
Java 클라이언트와의 통신, SoapUI, aso. 완벽하게 작동하지만 .NET (C#) 클라이언트는 내가 생각하는 maleformed 요청을 보내고 있습니다. 프로젝트가 이미 존재하고 많은 시간 동안 설치 되었기 때문에 C#으로 개발할 수 없습니다. 비슷한 문제가있는 스레드를 많이 읽었지만 제 경우에 대한 해결책을 찾지 못했습니다.
간단한 테스트 케이스를 작성하여 짧은 방법으로 문제를 표시했습니다.
자바 코드 :
main.java
//...
Endpoint endpoint = Endpoint.create(new WS());
endpoint.publish("http://0.0.0.0:8081/test");
//...
WS.java
//...
@WebService(serviceName = "WS")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class WS {
@WebMethod(operationName = "echo")
public String echo(@WebParam(name = "val") String val) {
return val;
}
}
은 WSDL :
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webj/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://webj/" name="WS">
<types/>
<message name="echo">
<part name="val" type="xsd:string"/>
</message>
<message name="echoResponse">
<part name="return" type="xsd:string"/>
</message>
<portType name="WS">
<operation name="echo">
<input wsam:Action="http://webj/WS/echoRequest" message="tns:echo"/>
<output wsam:Action="http://webj/WS/echoResponse" message="tns:echoResponse"/>
</operation>
</portType>
<binding name="WSPortBinding" type="tns:WS">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
<operation name="echo">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal" namespace="http://webj/"/>
</input>
<output>
<soap:body use="literal" namespace="http://webj/"/>
</output>
</operation>
</binding>
<service name="WS">
<port name="WSPort" binding="tns:WSPortBinding">
<soap:address location="http://xxx:8081/test"/>
</port>
</service>
C#을 요청
,210JAVA 요청 문제는 매개 변수 "발"의 namespave 것 같다
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:std="http://webj/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <std:echo> <val>TEST</val> </std:echo> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
:에 네임 스페이스를 추가하여
<echo xmlns="http://webj/">
<val xmlns="http://webj/">TEST</val>
</echo>
이미 자바에서이 사건을 테스트 한 매개 변수 "val"수동으로 동일한 문제가 있습니다. C#에서는 생성 된 WebReferences 및 ServiceReferences를 사용해 보았습니다.
(예를 들어, ServiceReference)
TestService.WSClient proxy = new TestService.WSClient();
String results = proxy.echo("TEST");
내가 .NET 요청에 대한 자바 서버 호환하시기 바랍니다 얻을 수있는 방법 누군가가 말해 줄래? 도움 주셔서 감사합니다!
SoapUI를 모형 서버로 사용하고 C# 코드를 보내는 것이 무엇인지 직접 확인하십시오. – JIV
@ JIV C#이 위의 "C# 요청"을 보내고 있습니다 (자바 측에서 전송을 기록했습니다) –
그리고 C#의 요청이 SoapUI에서 유효합니까? – JIV