예제 #1
0
int agentProxy::setCameraInfo(struct camera__info *_info, std::string &message)
{   struct soap *soap = this;
    struct agent__setCameraInfo soap_tmp_agent__setCameraInfo;
    struct agent__setCameraInfoResponse *soap_tmp_agent__setCameraInfoResponse;
    const char *soap_action = NULL;
    soap->encodingStyle = NULL;
    soap_tmp_agent__setCameraInfo._info = _info;
    soap_begin(soap);
    soap_serializeheader(soap);
    soap_serialize_agent__setCameraInfo(soap, &soap_tmp_agent__setCameraInfo);
    if (soap_begin_count(soap))
        return soap->error;
    if (soap->mode & SOAP_IO_LENGTH)
    {   if (soap_envelope_begin_out(soap)
                || soap_putheader(soap)
                || soap_body_begin_out(soap)
                || soap_put_agent__setCameraInfo(soap, &soap_tmp_agent__setCameraInfo, "agent:setCameraInfo", NULL)
                || soap_body_end_out(soap)
                || soap_envelope_end_out(soap))
            return soap->error;
    }
    if (soap_end_count(soap))
        return soap->error;
    if (soap_connect(soap, soap_endpoint, soap_action)
            || soap_envelope_begin_out(soap)
            || soap_putheader(soap)
            || soap_body_begin_out(soap)
            || soap_put_agent__setCameraInfo(soap, &soap_tmp_agent__setCameraInfo, "agent:setCameraInfo", NULL)
            || soap_body_end_out(soap)
            || soap_envelope_end_out(soap)
            || soap_end_send(soap))
        return soap_closesock(soap);
    if (!&message)
        return soap_closesock(soap);
    soap_default_std__string(soap, &message);
    if (soap_begin_recv(soap)
            || soap_envelope_begin_in(soap)
            || soap_recv_header(soap)
            || soap_body_begin_in(soap))
        return soap_closesock(soap);
    soap_tmp_agent__setCameraInfoResponse = soap_get_agent__setCameraInfoResponse(soap, NULL, "agent:setCameraInfoResponse", "");
    if (soap->error)
        return soap_recv_fault(soap, 0);
    if (soap_body_end_in(soap)
            || soap_envelope_end_in(soap)
            || soap_end_recv(soap))
        return soap_closesock(soap);
    message = soap_tmp_agent__setCameraInfoResponse->message;
    return soap_closesock(soap);
}
예제 #2
0
SOAP_FMAC5 int SOAP_FMAC6 soap_call___ns3__wmImed_USCORESrvCertificacion(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct _ns1__wmImed_USCORESrvCertificacion *ns1__wmImed_USCORESrvCertificacion, struct _ns1__wmImed_USCORESrvCertificacionResponse *ns1__wmImed_USCORESrvCertificacionResponse)
{	struct __ns3__wmImed_USCORESrvCertificacion soap_tmp___ns3__wmImed_USCORESrvCertificacion;
	if (!soap_endpoint)
		soap_endpoint = "http://192.169.50.11/servicios/wsCertificacion.asmx";
	if (!soap_action)
		soap_action = "http://tempuri.org/wmImed_SrvCertificacion";
	soap->encodingStyle = NULL;
	soap_tmp___ns3__wmImed_USCORESrvCertificacion.ns1__wmImed_USCORESrvCertificacion = ns1__wmImed_USCORESrvCertificacion;
	soap_begin(soap);
	soap_serializeheader(soap);
	soap_serialize___ns3__wmImed_USCORESrvCertificacion(soap, &soap_tmp___ns3__wmImed_USCORESrvCertificacion);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put___ns3__wmImed_USCORESrvCertificacion(soap, &soap_tmp___ns3__wmImed_USCORESrvCertificacion, "-ns3:wmImed_SrvCertificacion", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_endpoint, soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put___ns3__wmImed_USCORESrvCertificacion(soap, &soap_tmp___ns3__wmImed_USCORESrvCertificacion, "-ns3:wmImed_SrvCertificacion", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!ns1__wmImed_USCORESrvCertificacionResponse)
		return soap_closesock(soap);
	soap_default__ns1__wmImed_USCORESrvCertificacionResponse(soap, ns1__wmImed_USCORESrvCertificacionResponse);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	soap_get__ns1__wmImed_USCORESrvCertificacionResponse(soap, ns1__wmImed_USCORESrvCertificacionResponse, "ns1:wmImed_SrvCertificacionResponse", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}
예제 #3
0
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ns__getQuote(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *symbol, float *Result)
{	struct ns__getQuote soap_tmp_ns__getQuote;
	struct ns__getQuoteResponse *soap_tmp_ns__getQuoteResponse;
	soap->encodingStyle = NULL;
	soap_tmp_ns__getQuote.symbol = symbol;
	soap_begin(soap);
	soap_serializeheader(soap);
	soap_serialize_ns__getQuote(soap, &soap_tmp_ns__getQuote);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_ns__getQuote(soap, &soap_tmp_ns__getQuote, "ns:getQuote", "")
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_endpoint, soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_ns__getQuote(soap, &soap_tmp_ns__getQuote, "ns:getQuote", "")
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	soap_default_float(soap, Result);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	soap_tmp_ns__getQuoteResponse = soap_get_ns__getQuoteResponse(soap, NULL, "ns:getQuoteResponse", "");
	if (soap->error)
	{	if (soap->error == SOAP_TAG_MISMATCH && soap->level == 2)
			return soap_recv_fault(soap);
		return soap_closesock(soap);
	}
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	if (Result && soap_tmp_ns__getQuoteResponse->Result)
		*Result = *soap_tmp_ns__getQuoteResponse->Result;
	return soap_closesock(soap);
}
예제 #4
0
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ns__GetCity(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *Secret, std::string *result)
{	struct ns__GetCity soap_tmp_ns__GetCity;
	struct ns__GetCityResponse *soap_tmp_ns__GetCityResponse;
	soap->encodingStyle = NULL;
	soap_tmp_ns__GetCity.Secret = Secret;
	soap_begin(soap);
	soap_serializeheader(soap);
	soap_serialize_ns__GetCity(soap, &soap_tmp_ns__GetCity);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_ns__GetCity(soap, &soap_tmp_ns__GetCity, "ns:GetCity", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_endpoint, soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_ns__GetCity(soap, &soap_tmp_ns__GetCity, "ns:GetCity", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!result)
		return soap_closesock(soap);
	soap_default_std__string(soap, result);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	soap_tmp_ns__GetCityResponse = soap_get_ns__GetCityResponse(soap, NULL, "ns:GetCityResponse", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	if (result && soap_tmp_ns__GetCityResponse->result)
		*result = *soap_tmp_ns__GetCityResponse->result;
	return soap_closesock(soap);
}
예제 #5
0
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ims__haveFriends(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *user, int *result)
{	struct ims__haveFriends soap_tmp_ims__haveFriends;
	struct ims__haveFriendsResponse *soap_tmp_ims__haveFriendsResponse;
	soap->encodingStyle = NULL;
	soap_tmp_ims__haveFriends.user = user;
	soap_begin(soap);
	soap_serializeheader(soap);
	soap_serialize_ims__haveFriends(soap, &soap_tmp_ims__haveFriends);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_ims__haveFriends(soap, &soap_tmp_ims__haveFriends, "ims:haveFriends", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_endpoint, soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_ims__haveFriends(soap, &soap_tmp_ims__haveFriends, "ims:haveFriends", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!result)
		return soap_closesock(soap);
	soap_default_int(soap, result);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	soap_tmp_ims__haveFriendsResponse = soap_get_ims__haveFriendsResponse(soap, NULL, "ims:haveFriendsResponse", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	if (result && soap_tmp_ims__haveFriendsResponse->result)
		*result = *soap_tmp_ims__haveFriendsResponse->result;
	return soap_closesock(soap);
}
예제 #6
0
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ims__getFriendshipRequest(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *user, struct _Struct_3 *friend_nick)
{	struct ims__getFriendshipRequest soap_tmp_ims__getFriendshipRequest;
	struct ims__getFriendshipRequestResponse *soap_tmp_ims__getFriendshipRequestResponse;
	soap->encodingStyle = NULL;
	soap_tmp_ims__getFriendshipRequest.user = user;
	soap_begin(soap);
	soap_serializeheader(soap);
	soap_serialize_ims__getFriendshipRequest(soap, &soap_tmp_ims__getFriendshipRequest);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_ims__getFriendshipRequest(soap, &soap_tmp_ims__getFriendshipRequest, "ims:getFriendshipRequest", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_endpoint, soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_ims__getFriendshipRequest(soap, &soap_tmp_ims__getFriendshipRequest, "ims:getFriendshipRequest", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!friend_nick)
		return soap_closesock(soap);
	soap_default_String(soap, friend_nick);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	soap_tmp_ims__getFriendshipRequestResponse = soap_get_ims__getFriendshipRequestResponse(soap, NULL, "ims:getFriendshipRequestResponse", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	if (friend_nick && soap_tmp_ims__getFriendshipRequestResponse->friend_nick)
		*friend_nick = *soap_tmp_ims__getFriendshipRequestResponse->friend_nick;
	return soap_closesock(soap);
}
예제 #7
0
파일: soapClient.c 프로젝트: cfliao/hiwifi8
SOAP_FMAC5 int SOAP_FMAC6 soap_call___cwmp__TransferComplete(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct _cwmp__TransferComplete *cwmp__TransferComplete, struct _cwmp__TransferCompleteResponse *cwmp__TransferCompleteResponse)
{	struct __cwmp__TransferComplete soap_tmp___cwmp__TransferComplete;
	if (!soap_action)
		soap_action = "urn:dslforum-org:cwmp-1-1:transferCompleteIn";
	soap->encodingStyle = NULL;
	soap_tmp___cwmp__TransferComplete.cwmp__TransferComplete = cwmp__TransferComplete;
	soap_begin(soap);
	soap_serializeheader(soap);
	soap_serialize___cwmp__TransferComplete(soap, &soap_tmp___cwmp__TransferComplete);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put___cwmp__TransferComplete(soap, &soap_tmp___cwmp__TransferComplete, "-cwmp:TransferComplete", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_endpoint, soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put___cwmp__TransferComplete(soap, &soap_tmp___cwmp__TransferComplete, "-cwmp:TransferComplete", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!cwmp__TransferCompleteResponse)
		return soap_closesock(soap);
	soap_default__cwmp__TransferCompleteResponse(soap, cwmp__TransferCompleteResponse);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	soap_get__cwmp__TransferCompleteResponse(soap, cwmp__TransferCompleteResponse, "cwmp:TransferCompleteResponse", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}
예제 #8
0
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ims__getLastMessage(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct _Struct_1 *myMessage)
{	struct ims__getLastMessage soap_tmp_ims__getLastMessage;
	struct ims__getLastMessageResponse *soap_tmp_ims__getLastMessageResponse;
	soap->encodingStyle = NULL;
	soap_begin(soap);
	soap_serializeheader(soap);
	soap_serialize_ims__getLastMessage(soap, &soap_tmp_ims__getLastMessage);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_ims__getLastMessage(soap, &soap_tmp_ims__getLastMessage, "ims:getLastMessage", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_endpoint, soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_ims__getLastMessage(soap, &soap_tmp_ims__getLastMessage, "ims:getLastMessage", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!myMessage)
		return soap_closesock(soap);
	soap_default_Message(soap, myMessage);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	soap_tmp_ims__getLastMessageResponse = soap_get_ims__getLastMessageResponse(soap, NULL, "ims:getLastMessageResponse", "");
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	if (myMessage && soap_tmp_ims__getLastMessageResponse->myMessage)
		*myMessage = *soap_tmp_ims__getLastMessageResponse->myMessage;
	return soap_closesock(soap);
}
예제 #9
0
SOAP_FMAC5 int SOAP_FMAC6 soap_call_oph__ophExecuteMain(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *ophExecuteMainRequest, struct oph__ophResponse *ophExecuteMainResponse)
{	struct oph__ophExecuteMain soap_tmp_oph__ophExecuteMain;
	if (soap_action == NULL)
		soap_action = "";
	soap_tmp_oph__ophExecuteMain.ophExecuteMainRequest = ophExecuteMainRequest;
	soap_begin(soap);
	soap->encodingStyle = NULL;
	soap_serializeheader(soap);
	soap_serialize_oph__ophExecuteMain(soap, &soap_tmp_oph__ophExecuteMain);
	if (soap_begin_count(soap))
		return soap->error;
	if (soap->mode & SOAP_IO_LENGTH)
	{	if (soap_envelope_begin_out(soap)
		 || soap_putheader(soap)
		 || soap_body_begin_out(soap)
		 || soap_put_oph__ophExecuteMain(soap, &soap_tmp_oph__ophExecuteMain, "oph:ophExecuteMain", NULL)
		 || soap_body_end_out(soap)
		 || soap_envelope_end_out(soap))
			 return soap->error;
	}
	if (soap_end_count(soap))
		return soap->error;
	if (soap_connect(soap, soap_url(soap, soap_endpoint, NULL), soap_action)
	 || soap_envelope_begin_out(soap)
	 || soap_putheader(soap)
	 || soap_body_begin_out(soap)
	 || soap_put_oph__ophExecuteMain(soap, &soap_tmp_oph__ophExecuteMain, "oph:ophExecuteMain", NULL)
	 || soap_body_end_out(soap)
	 || soap_envelope_end_out(soap)
	 || soap_end_send(soap))
		return soap_closesock(soap);
	if (!ophExecuteMainResponse)
		return soap_closesock(soap);
	soap_default_oph__ophResponse(soap, ophExecuteMainResponse);
	if (soap_begin_recv(soap)
	 || soap_envelope_begin_in(soap)
	 || soap_recv_header(soap)
	 || soap_body_begin_in(soap))
		return soap_closesock(soap);
	soap_get_oph__ophResponse(soap, ophExecuteMainResponse, "oph:ophResponse", NULL);
	if (soap->error)
		return soap_recv_fault(soap, 0);
	if (soap_body_end_in(soap)
	 || soap_envelope_end_in(soap)
	 || soap_end_recv(soap))
		return soap_closesock(soap);
	return soap_closesock(soap);
}
예제 #10
0
int agentProxy::setCameraURI(struct camera__uri *_info, struct camera__info &_infoResponse)
{   struct soap *soap = this;
    struct agent__setCameraURI soap_tmp_agent__setCameraURI;
    const char *soap_action = NULL;
    soap->encodingStyle = NULL;
    soap_tmp_agent__setCameraURI._info = _info;
    soap_begin(soap);
    soap_serializeheader(soap);
    soap_serialize_agent__setCameraURI(soap, &soap_tmp_agent__setCameraURI);
    if (soap_begin_count(soap))
        return soap->error;
    if (soap->mode & SOAP_IO_LENGTH)
    {   if (soap_envelope_begin_out(soap)
                || soap_putheader(soap)
                || soap_body_begin_out(soap)
                || soap_put_agent__setCameraURI(soap, &soap_tmp_agent__setCameraURI, "agent:setCameraURI", NULL)
                || soap_body_end_out(soap)
                || soap_envelope_end_out(soap))
            return soap->error;
    }
    if (soap_end_count(soap))
        return soap->error;
    if (soap_connect(soap, soap_endpoint, soap_action)
            || soap_envelope_begin_out(soap)
            || soap_putheader(soap)
            || soap_body_begin_out(soap)
            || soap_put_agent__setCameraURI(soap, &soap_tmp_agent__setCameraURI, "agent:setCameraURI", NULL)
            || soap_body_end_out(soap)
            || soap_envelope_end_out(soap)
            || soap_end_send(soap))
        return soap_closesock(soap);
    if (!&_infoResponse)
        return soap_closesock(soap);
    soap_default_camera__info(soap, &_infoResponse);
    if (soap_begin_recv(soap)
            || soap_envelope_begin_in(soap)
            || soap_recv_header(soap)
            || soap_body_begin_in(soap))
        return soap_closesock(soap);
    soap_get_camera__info(soap, &_infoResponse, "camera:info", "");
    if (soap->error)
        return soap_recv_fault(soap, 0);
    if (soap_body_end_in(soap)
            || soap_envelope_end_in(soap)
            || soap_end_recv(soap))
        return soap_closesock(soap);
    return soap_closesock(soap);
}
예제 #11
0
SOAP_FMAC5 int SOAP_FMAC6 soap_call___s0__Read(struct soap* soap,
    const char* soap_endpoint, const char* soap_action, _s0__Read* s0__Read,
    _s0__ReadResponse* s0__ReadResponse)
{
  struct __s0__Read soap_tmp___s0__Read;
  if (!soap_action)
    soap_action = "http://opcfoundation.org/webservices/XMLDA/1.0/Read";
  soap->encodingStyle = NULL;
  soap_tmp___s0__Read.s0__Read = s0__Read;
  soap_begin(soap);
  soap_serializeheader(soap);
  soap_serialize___s0__Read(soap, &soap_tmp___s0__Read);
  if (soap_begin_count(soap))
    return soap->error;
  if (soap->mode & SOAP_IO_LENGTH) {
    if (soap_envelope_begin_out(soap) || soap_putheader(soap)
        || soap_body_begin_out(soap)
        || soap_put___s0__Read(soap, &soap_tmp___s0__Read, "-s0:Read", "")
        || soap_body_end_out(soap) || soap_envelope_end_out(soap))
      return soap->error;
  }
  if (soap_end_count(soap))
    return soap->error;
  if (soap_connect(soap, soap_endpoint, soap_action)
      || soap_envelope_begin_out(soap) || soap_putheader(soap)
      || soap_body_begin_out(soap)
      || soap_put___s0__Read(soap, &soap_tmp___s0__Read, "-s0:Read", "")
      || soap_body_end_out(soap) || soap_envelope_end_out(soap)
      || soap_end_send(soap))
    return soap_closesock(soap);
  if (!s0__ReadResponse)
    return soap_closesock(soap);
  s0__ReadResponse->soap_default(soap);
  if (soap_begin_recv(soap) || soap_envelope_begin_in(soap)
      || soap_recv_header(soap) || soap_body_begin_in(soap))
    return soap_closesock(soap);
  s0__ReadResponse->soap_get(soap, "s0:ReadResponse", "");
  if (soap->error) {
    if (soap->error == SOAP_TAG_MISMATCH && soap->level == 2)
      return soap_recv_fault(soap);
    return soap_closesock(soap);
  }
  if (soap_body_end_in(soap) || soap_envelope_end_in(soap)
      || soap_end_recv(soap))
    return soap_closesock(soap);
  return soap_closesock(soap);
}
예제 #12
0
int soap_parser_decode(void *handle, const char *xml)
{
    SoapParser *parser = (SoapParser *)handle;
    struct soap *soap;
    int fd[2];

    if (parser == NULL) {
        return -1;
    }
    if (xml == NULL) {
        LOGE(LOG_TAG, "input xml is empty");
        return -1;
    }

    soap = parser->soap;
    pipe(fd);

    /*soap_init(soap);*/
    soap_init1(soap, SOAP_XML_IGNORENS);
    soap_set_namespaces(soap, namespaces);

    soap->socket = -1;
    soap->recvfd = fd[0];
    write(fd[1], xml, strlen(xml));
    close(fd[1]);

    if (soap_begin_recv(soap) != 0
        || soap_envelope_begin_in(soap) != 0) {
        LOGE(LOG_TAG, "begin decode failed, error=%d", soap->error);
        return -1;
    }

    if (soap_recv_header(soap) != 0) {
        LOGE(LOG_TAG, "decode soap header failed, %d", soap->error);
        return -1;
    }
    _soap_header_parse(soap->header,
                       &(parser->id),
                       &(parser->hold_requests),
                       &(parser->session_timeout),
                       &(parser->supported_cwmp_versions),
                       &(parser->use_cwmp_version));

    if (soap_body_begin_in(soap) != 0) {
        LOGE(LOG_TAG, "decode soap body failed, %d", soap->error);
        return -1;
    }

    parser->_namespaces = _soap_namespaces_parse(soap);
    parser->namespaces = parser->_namespaces;
    parser->version = _soap_version_parse(xml, parser->namespaces);
    if (parser->version == CWMP_VERSION_1_2) {
        if (parser->supported_cwmp_versions != 0 && parser->use_cwmp_version != 0) {
            parser->version = CWMP_VERSION_1_4;
        } else if (parser->session_timeout > 0) {
            parser->version = CWMP_VERSION_1_3;
        }
    }

    if (soap_recv_fault(soap, 1) != 0) {
        parser->type = CWMP_MSG_FAULT;
        _soap_fault_dump(soap->fault);
        if (soap->fault != NULL
            && soap->fault->detail != NULL
            && soap->fault->detail->__type == SOAP_TYPE__cwmp__Fault) {
            struct _cwmp__Fault *cwmp_fault;
            cwmp_fault = (struct _cwmp__Fault *)soap->fault->detail->fault;
            if (cwmp_fault != NULL) {
                if (cwmp_fault->FaultCode != NULL) {
                    parser->fault_code = atoi(cwmp_fault->FaultCode);
                }
                parser->fault_string = cwmp_fault->FaultString;
                parser->fault_body = cwmp_fault;
                parser->body = cwmp_fault;
            }
        }
        return 0;
    }

    int gsoap_type;
    parser->body = soap_getelement(soap, &gsoap_type);
    parser->type = _get_cwmp_type(gsoap_type);
    if (soap->error) {
        LOGE(LOG_TAG, "get cwmp body failed, error=%d", soap->error);
        return -1;
    }

    if (soap_body_end_in(soap)
        || soap_envelope_end_in(soap)
        || soap_end_recv(soap)) {
        LOGE(LOG_TAG, "end decode failed, %d", soap->error);
        return -1;
    }
    close(fd[0]);

    return 0;
}
예제 #13
0
파일: soap_parser.c 프로젝트: bazz2/cpe
/**
 * xml -> body
 * @param[in] handle: parser
 * @param[in] xml: the xml to be decoded
 * @param[out] id: cpe's id? I don't know
 * @param[out] hold_request: hold
 * @param[out] type: SOAP/RPC type
 * @param[out] body: the result get from xml
 */
int soap_parser_decode(void *handle, const char *xml,
                       int *id, int *hold_requests, int *type, void **body)
{
    struct soap_parser *parser = (struct soap_parser *)handle;
    struct soap *soap = parser->soap;
    int fd[2];

    if (xml == NULL) {
        return -1;
    }

    /*LOGD(parser->tag, xml);*/

    pipe(fd);

    *id = 0;
    *hold_requests = 0;
    *type = 0;
    *body = NULL;

    soap_init(soap);
    soap->socket = -1;
    soap->recvfd = fd[0];
    write(fd[1], xml, strlen(xml));
    close(fd[1]);

    if (soap_begin_recv(soap)
        || soap_envelope_begin_in(soap)
        || soap_recv_header(soap)
        || soap_body_begin_in(soap)) {
        return -1;
    }

    if (soap->header != NULL) {
        if (soap->header->__HoldRequests != NULL) {
            *hold_requests = soap->header->__HoldRequests->__item;
        }
        if (soap->header->__ID != NULL) {
            if (soap->header->__ID->__item != NULL) {
                *id = atoi(soap->header->__ID->__item);
            }
        }
    }

    if (soap_recv_fault(soap, 1)) {
        LOGE(parser->tag, "FaultCode=%s, FaultString=%s",
             soap->fault->faultcode, soap->fault->faultstring);
        *type = SOAP_TYPE__ns1__Fault;
        if (soap->fault != NULL && soap->fault->detail != NULL) {
            *body = soap->fault->detail->__any;
        }
        return 0;
    }

    *body = soap_getelement(soap, type);
    if (soap->error) {
        return -1;
    }

    if (soap_body_end_in(soap)
        || soap_envelope_end_in(soap)
        || soap_end_recv(soap)) {
        return -1;
    }
    ////soap_end(soap);
    //soap_free(soap);
    close(fd[0]);

    if (soap->header != NULL) {
        if (soap->header->__ID != NULL) {
            LOGV(parser->tag, "soap header: ID=%s(%s)",
                 soap->header->__ID->__item,
                 soap->header->__ID->SOAP_ENV__mustUnderstand);
        }
        if (soap->header->__HoldRequests != NULL) {
            LOGV(parser->tag, "soap header: HoldRequests=%s(%s)",
                 soap->header->__HoldRequests->__item,
                 soap->header->__HoldRequests->SOAP_ENV__mustUnderstand);
        }
    }
    return 0;
}