axis 클라이언트 호출.NET(axmx) 서버
private boolean connect(String namespace, String endpoint, String function) {
try {
// WS
call = (Call) service.createCall();
//
call.setOperationName(new QName(namespace, function));
//
call.setTargetEndpointAddress(endpoint);
} catch (ServiceException ex) {
LOG.error(" (" + endpoint + ") ", ex);
return false;
}
return true;
}
public boolean dmisQuery(String endpoint, String namespace, String function, String start,
String until,String GID) {
//LOG.info(" :" + endpoint + ", :" + function + ", " + " :" + sender);
//
if (!connect(namespace, endpoint, function))
return false;
boolean result = false;
try {
Object data = call.invoke(new Object[] {GID,start,until});
//
String source = new String(Base64.decode((String) data));
LOG.info(" :" + (String) data);
//Response response = unmarshal(source);
//LOG.info(" :" + response.getStatus());
// } catch (JAXBException ex) {
// LOG.error(" XML ", ex);
} catch (RemoteException ex) {
LOG.error(" (" + endpoint + ") ", ex);
}
return result;
}
public static void main(String[] args){
impl.dmisQuery("http://10.50.11.190/MWWebSite/ProjectHome/WebService/WebSer_TY_GJ.asmx", "http://tempuri.org/", "GetData", "2012-08-01 00:00:00", "2012-08-01 00:00:00","");
}
위의 주소를 주의하세요http://10.50.11.190/MWWebSite/ProjectHome/WebService/WebSer_TY_GJ.asmx접두사는'asmx'입니다. 이 주소가 대표하는 서버는 다음과 같습니다.NET 아키텍처의
오류 보고:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
faultSubcode:
faultString: System.Web.Services.Protocols.SoapException: HTTP SOAPAction : 。
System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
System.Web.Services.Protocols.SoapServerProtocol.Initialize()
System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
해결 방법:
connect 방법을 수정합니다.NET 웹 서비스 서버, axis 클라이언트 호출 시 추가
call.setSOAPActionURI(namespace+function);
수정하면 다음과 같습니다.
private boolean connect(String namespace, String endpoint, String function) {
try {
// WS
call = (Call) service.createCall();
//
call.setOperationName(new QName(namespace, function));
//
call.setTargetEndpointAddress(endpoint);
/****************** .NET webservice *******************/
call.addParameter(new QName("http://tempuri.org/","GID"),
org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.addParameter(new QName("http://tempuri.org/","start"),org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.addParameter(new QName("http://tempuri.org/","until"),org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://tempuri.org/GetData");
/****************** .NET webservice *******************/
} catch (ServiceException ex) {
LOG.error(" (" + endpoint + ") ", ex);
return false;
}
return true;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.