Ошибка разбора wsdl неверный формат wsdl описания

Пытаюсь создать синхронизацию с мобильным приложением (1С)

Адрес = «http://192.168.1.92/pqt/ws/ws1.1cws?wsd1»;;

Попытка

    Определения = Новый WSОпределения(Адрес,»guest»,»gfhjkm»);

Исключение

    Сообщить(ОписаниеОшибки(),СтатусСообщения.Обычное); Возврат;

КонецПопытки;

Ошибка: «Ошибка при вызове конструктора (WSОпределения): WSDL должен содержать элемент definitions: Неверный формат

Если выходить с браузера, то:

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»>;

<soap:Body>

  <soap:Fault>

   <faultcode>soap:Client</faultcode>

    <faultstring>

     Несоответствие количества параметров операции веб-сервиса и процедуры-обработчика {http://localhost/ws1}:ВебОбмен:ВыполнитьОбмен()

    </faultstring>

   <detail/>

  </soap:Fault>

</soap:Body>

</soap:Envelope>

I’m programming a SOAP client for an existing soap web service.
I’m using Wildfly8.2 as a server where the client is and JbossWS, JAX-WS

I generated the classes needed to call the service via eclispe with the NEW-> Web service client wizzard

When I call the service I got the error INVALID_WSDL … the stack trace is on the bottom.

The actual problematic service call is the call to «addService» method of the web service.

This is the code that I use to call the service:

SOAP service1 = new SOAP();
WorkflowEditor workflowEditor = service1.getSOAPPort();

AddService parameters = new AddService();
parameters.setLogicalURI(logicalUri);
parameters.setServiceDescription(serviceDescription);
parameters.setServiceType(servicetype.getName());
Specialties specialities = new Specialties();
specialities.getSpecialty().add("aaaa");
parameters.setSpecialties(specialities);
parameters.setWsdlLocation(wsdlLocation);
parameters.setWsdlServiceName(wsdlServiceName);
parameters.setSessionToken(currentUser.getKeystoneSessionToken());
workflowEditor.addService(parameters);

the generated java class for the parameters in the soap call:

package si.arctur.services.workflowEditor;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {

})
@XmlRootElement(name = "addService")
public class AddService {

    @XmlElement(required = true)
    protected String sessionToken;
    @XmlElement(required = true)
    protected String wsdlLocation;
    @XmlElement(required = true)
    protected String wsdlServiceName;
    @XmlElement(required = true)
    protected String logicalURI;
    @XmlElement(required = true)
    protected String serviceType;
    protected AddService.Specialties specialties;
    @XmlElement(required = true)
    protected String serviceDescription;


    public String getSessionToken() {
        return sessionToken;
    }


    public void setSessionToken(String value) {
        this.sessionToken = value;
    }


    public String getWsdlLocation() {
        return wsdlLocation;
    }


    public void setWsdlLocation(String value) {
        this.wsdlLocation = value;
    }


    public String getWsdlServiceName() {
        return wsdlServiceName;
    }


    public void setWsdlServiceName(String value) {
        this.wsdlServiceName = value;
    }


    public String getLogicalURI() {
        return logicalURI;
    }


    public void setLogicalURI(String value) {
        this.logicalURI = value;
    }


    public String getServiceType() {
        return serviceType;
    }


    public void setServiceType(String value) {
        this.serviceType = value;
    }


    public AddService.Specialties getSpecialties() {
        return specialties;
    }


    public void setSpecialties(AddService.Specialties value) {
        this.specialties = value;
    }

    public String getServiceDescription() {
        return serviceDescription;
    }


    public void setServiceDescription(String value) {
        this.serviceDescription = value;
    }


    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "specialty"
    })
    public static class Specialties {

        @XmlElement(required = true)
        protected List<String> specialty;


        public List<String> getSpecialty() {
            if (specialty == null) {
                specialty = new ArrayList<String>();
            }
            return this.specialty;
        }

    }

}

This is the wsdl copied from the browser:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="WorkflowEditor" targetNamespace="*****************" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wfe="*****************" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<xsd:schema targetNamespace="*****************">
<xsd:element name="addService">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
<xsd:element name="wsdlLocation" type="xsd:string"/>
<xsd:element name="wsdlServiceName" type="xsd:string"/>
<xsd:element name="logicalURI" type="xsd:string"/>
<xsd:element name="serviceType" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="specialties">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" name="specialty" type="xsd:string">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="serviceDescription" type="xsd:string">
</xsd:element>
<xsd:element name="serviceTitle" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="addServiceResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="removeService">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
<xsd:element name="serviceURI" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="removeServiceResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="addUserToService">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
<xsd:element name="serviceURI" type="xsd:string"/>
<xsd:element name="username" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="addUserToServiceResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="removeUserFromService">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
<xsd:element name="serviceURI" type="xsd:string"/>
<xsd:element name="username" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="removeUserFromServiceResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="addWorkflow">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
<xsd:element name="workflowDescription_base64" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="addWorkflowResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="removeWorkflow">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
<xsd:element name="workflowURI" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="removeWorkflowResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="replaceWorkflow">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
<xsd:element name="workflowDescription_base64" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="replaceWorkflowResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getWorkflowDescription">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
<xsd:element name="workflowURI" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="getWorkflowDescriptionResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
<xsd:element name="workflowDescription_base64" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getWorkflows">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="getWorkflowsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
<xsd:element name="workflows">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="workflow" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getServices">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="getServicesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
<xsd:element name="services">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="service" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getServiceIOs">
<xsd:complexType>
<xsd:all>
<xsd:element name="sessionToken" type="xsd:string"/>
<xsd:element name="serviceURI" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="getServiceIOsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
<xsd:element name="serviceIOs">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="serviceIO" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getServiceInfo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sessionToken" type="xsd:string"/>
<xsd:element name="serviceURI" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getServiceInfoResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="wsdlLink" type="xsd:string"/>
<xsd:element name="title" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getServicesInfo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sessionToken" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getServicesInfoResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
<xsd:element name="services">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="service">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="serviceURI" type="xsd:string">
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="0" name="serviceDescription" type="xsd:string">
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="1" name="serviceWSDL" type="xsd:string">
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="1" name="serviceTitle" type="xsd:string">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="removeWorkflowRequest">
<wsdl:part name="parameters" element="wfe:removeWorkflow">
</wsdl:part>
</wsdl:message>
<wsdl:message name="addWorkflowRequest">
<wsdl:part name="parameters" element="wfe:addWorkflow">
</wsdl:part>
</wsdl:message>
<wsdl:message name="removeUserFromServiceRequest">
<wsdl:part name="parameters" element="wfe:removeUserFromService">
</wsdl:part>
</wsdl:message>
<wsdl:message name="removeServiceRequest">
<wsdl:part name="parameters" element="wfe:removeService">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getServicesRequest">
<wsdl:part name="parameters" element="wfe:getServices">
</wsdl:part>
</wsdl:message>
<wsdl:message name="removeUserFromServiceResponse">
<wsdl:part name="parameters" element="wfe:removeUserFromServiceResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="replaceWorkflowRequest">
<wsdl:part name="parameters" element="wfe:replaceWorkflow">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getServicesInfoRequest">
<wsdl:part name="parameters" element="wfe:getServicesInfo">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getWorkflowDescriptionRequest">
<wsdl:part name="parameters" element="wfe:getWorkflowDescription">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getServicesResponse">
<wsdl:part name="parameters" element="wfe:getServicesResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getServiceIOsResponse">
<wsdl:part name="parameters" element="wfe:getServiceIOsResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getServiceInfoResponse">
<wsdl:part name="parameters" element="wfe:getServiceInfoResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="addUserToServiceResponse">
<wsdl:part name="parameters" element="wfe:addUserToServiceResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="removeWorkflowResponse">
<wsdl:part name="parameters" element="wfe:removeWorkflowResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getWorkflowDescriptionResponse">
<wsdl:part name="parameters" element="wfe:getWorkflowDescriptionResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getServiceInfoRequest">
<wsdl:part name="parameters" element="wfe:getServiceInfo">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getWorkflowsResponse">
<wsdl:part name="parameters" element="wfe:getWorkflowsResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getServiceIOsRequest">
<wsdl:part name="parameters" element="wfe:getServiceIOs">
</wsdl:part>
</wsdl:message>
<wsdl:message name="replaceWorkflowResponse">
<wsdl:part name="parameters" element="wfe:replaceWorkflowResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="addServiceResponse">
<wsdl:part name="parameters" element="wfe:addServiceResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="addUserToServiceRequest">
<wsdl:part name="parameters" element="wfe:addUserToService">
</wsdl:part>
</wsdl:message>
<wsdl:message name="removeServiceResponse">
<wsdl:part name="parameters" element="wfe:removeServiceResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getServicesInfoResponse">
<wsdl:part name="parameters" element="wfe:getServicesInfoResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="addWorkflowResponse">
<wsdl:part name="parameters" element="wfe:addWorkflowResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getWorkflowsRequest">
<wsdl:part name="parameters" element="wfe:getWorkflows">
</wsdl:part>
</wsdl:message>
<wsdl:message name="addServiceRequest">
<wsdl:part name="parameters" element="wfe:addService">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="WorkflowEditor">
<wsdl:operation name="addService">
<wsdl:input message="wfe:addServiceRequest">
</wsdl:input>
<wsdl:output message="wfe:addServiceResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="removeService">
<wsdl:input message="wfe:removeServiceRequest">
</wsdl:input>
<wsdl:output message="wfe:removeServiceResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="addUserToService">
<wsdl:input message="wfe:addUserToServiceRequest">
</wsdl:input>
<wsdl:output message="wfe:addUserToServiceResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="removeUserFromService">
<wsdl:input message="wfe:removeUserFromServiceRequest">
</wsdl:input>
<wsdl:output message="wfe:removeUserFromServiceResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="addWorkflow">
<wsdl:input message="wfe:addWorkflowRequest">
</wsdl:input>
<wsdl:output message="wfe:addWorkflowResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="removeWorkflow">
<wsdl:input message="wfe:removeWorkflowRequest">
</wsdl:input>
<wsdl:output message="wfe:removeWorkflowResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="replaceWorkflow">
<wsdl:input message="wfe:replaceWorkflowRequest">
</wsdl:input>
<wsdl:output message="wfe:replaceWorkflowResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getWorkflowDescription">
<wsdl:input message="wfe:getWorkflowDescriptionRequest">
</wsdl:input>
<wsdl:output message="wfe:getWorkflowDescriptionResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getWorkflows">
<wsdl:input message="wfe:getWorkflowsRequest">
</wsdl:input>
<wsdl:output message="wfe:getWorkflowsResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getServices">
<wsdl:input message="wfe:getServicesRequest">
</wsdl:input>
<wsdl:output message="wfe:getServicesResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getServiceIOs">
<wsdl:input message="wfe:getServiceIOsRequest">
</wsdl:input>
<wsdl:output message="wfe:getServiceIOsResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getServiceInfo">
<wsdl:input message="wfe:getServiceInfoRequest">
</wsdl:input>
<wsdl:output message="wfe:getServiceInfoResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getServicesInfo">
<wsdl:input message="wfe:getServicesInfoRequest">
</wsdl:input>
<wsdl:output message="wfe:getServicesInfoResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WorkflowEditorSOAP" type="wfe:WorkflowEditor">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="addService">
<soap:operation soapAction="*****************addService"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="removeService">
<soap:operation soapAction="*****************removeService"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="addUserToService">
<soap:operation soapAction="*****************addUserToService"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="removeUserFromService">
<soap:operation soapAction="*****************removeUserFromService"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="addWorkflow">
<soap:operation soapAction="*****************addWorkflow"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="removeWorkflow">
<soap:operation soapAction="*****************removeWorkflow"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="replaceWorkflow">
<soap:operation soapAction="*****************replaceWorkflow"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getWorkflowDescription">
<soap:operation soapAction="*****************getWorkflowDescription"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getWorkflows">
<soap:operation soapAction="*****************getWorkflows"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getServices">
<soap:operation soapAction="*****************getServices"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getServiceIOs">
<soap:operation soapAction="*****************getServiceIOs"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getServiceInfo">
<soap:operation soapAction="*****************getServiceInfo"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getServicesInfo">
<soap:operation soapAction="*****************getServicesInfo"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="SOAP">
<wsdl:port name="SOAPPort" binding="wfe:WorkflowEditorSOAP">
<soap:address location="*******************************"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

The stack trace error:

Caused by: javax.wsdl.WSDLException: WSDLException (at /html): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
at com.ibm.wsdl.xml.WSDLReaderImpl.checkElementName(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at org.apache.axis2.description.AxisService.createClientSideAxisService(AxisService.java:2317)
... 29 more

Помогите пожалуйста, не могу разобраться. Есть веб сервис сторонний, подключаюсь к нему через 1с на последней строчке выдает ошибку: {Форма.Форма.Форма}: Метод объекта не обнаружен (addComment) Proxy.addComment(«tasks»,45578,»Тест»,»ACCOUNTING»,»»);     В чем может быть дело. Из других систем этот метод работает

Прошу прощения. Это к 1С. Для сторонних может быть не так. Хотя кроме АдресВэбСервиса должно быть одинаково. Смотри в отладчике

В отладчике у меня есть только одна точка подключения, ее я и прописываю в Новый WSПрокси, если вызываю с окончанием soap, она ругается что порт не найден

Пробовала и «ПутьКМоемуСервису?wsdl» и «ПутьКМоемуСервису разницы нет

Проверь имя метода по wsdl

создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает

Если подумать, то ПутьКМоемуСервису?wsdl забив в браузер ты увидишь описание web-сервиса….

web-сервисы чувствительны к регистру букв.

создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает Она ругается, что формат неверен, в каком формате нужно указывать url

а в браузере открывается?

Путь у меня ПутьКМоемуСервису.xml?wsdl

открывается в xml формате

Есть веб сервис сторонний — как правило, в виде URI…

Пишет что неверный формат, может нужно каку-нибудь библитеку подгрузить?

:)))))))))))))))))))))))))))))))))))))))))))

адрес сервера секретный такой что ли?

значит не судьба с этим сервисом из 1Ски поработать. SOAP он такой SOAP, слишком вольно местами трактуемый

Адрес стороннего web-сервиса какой?

Да не нужен мне твой сервант, сама проверь, открывается ли в браузере wsdl-ка

Если там еще и https то вообще песня :)

открывая ПутьКМоемуСервису.xml?wsdl я получаю тоже что и когда пишу ПутьКМоемуСервису.xml

использовать платформу 8.3 в качестве ws2ws-proxy :)))

ТС, у меня была схожая ситуация, вот статья с моими изысканиями:

И что получаешь? *уже просто интересно*

В моем случае это не помогло(сторонний веб сервис был на Oracle Fusion Middlewere)

без разницы. Можно использовать любое MQ с поддержкой SOAP в качестве ws2ws-proxy

Ну не можешь и не можешь. Короче, ты описание сервиса через обычный браузер видишь?

Ищи метод addComment и смотри что он должен получить.

<part name=»type» type=»xsd:string»/><part name=»id» type=»xsd:int»/><part name=»comment» type=»xsd:string»/><part name=»user» type=»xsd:string»/><part name=»attachments» type=»soap-enc:Array»/>

MQ = Message Queue, например, RabbitMQ

это параметры метода addcomment

Метод в том пространстве имен?

>>Из других систем этот метод работает Из каких других, 1С или что-то иное?

на той же машине, что и сервер 1С? :)

ты с регистром имя метода точно не путаешься, дело в том, что метод addcomment из и addComment из с точки зрения SOAP — разные

на perl имя метода как звучит?

на perl они вызывают my $obj = $soap->addComment( $tw_type, $tw_id, $tw_comment, $tw_user, $tw_attachments );

у сервиса есть эхо-метод?

в скорее всего ошибка. в perl пространство имен и прочее статично или дергает из определения?

обычно метод echo реализуют у сервисов для диагностики связи.

Можешь создать класс на Net для подключения вэб сервиса а затем через вот этот прокиси подключить его как ком

+ в передача параметров неправильная согласно : и. т. п.

Да там в создании WSProxy косяк, ИМХО

1ска же нормально преобразует в xml примитивные типы, мне кажется, это излишество

с фабрикой я тоже пробовала, но проблема именно в том что 1с-ка не видит этот метод

Проблема в создании WSProxy

Причина? Ты не знаешь статично оно в perl или динамично?

проблема в том, что wsdl скорее всего не соответствует спецификации. из-за чего 1Ска не может преобразовать его в XTDO.

ИМХО, там она просто из другого пространства имен цепляет.

Для сложных и included type есть такая фича

URIПространстваИмен и прочее точно соответсвует определению?

сервис на закрытом порту?

а то играем в «Угадай мелодию»….

Для anyType нужно явное создание типа. Но в данном случае ругается на метод. Если же в она WS ссылку не может загрузить, то возможно, что 1С не понимает. Если бы была ссыдка можно было бы проверить

</portType> <binding name=»Binding» type=»tns:WSСервис.ИмяТочкиПодключения»><soap:binding style=»rpc» transport=»http://schemas.xmlsoap.org/soap/http»/><operation name=»addComment»></operation></binding> <service name=»Сервис»><port name=»WSСервис.ИмяТочкиПодключения» binding=»tns:Binding»><soap:address location=»URIПространстваИмен»/></port></service><message name=»addCommentIn»><part name=»type» type=»xsd:string»/><part name=»id» type=»xsd:int»/><part name=»comment» type=»xsd:string»/><part name=»user» type=»xsd:string»/><part name=»attachments» type=»soap-enc:Array»/></message> Что типа этого, в чем может быть ошибка

и закрывается все </definitions>

Я давно разочаровался в 1с-овском SOAP. Сплошь и рядом продвинутые веб-сервисы юзают SOAP шире, чем его поддерживает 1С. В итоге 1С их «не понимает».

Вы статью читали, ссылку на которую я давал в самом начале? Делайте как там.

Сохрани WSDL-описание в xml-файл, и загрузи WSссылку, если будет ошибка «неверный формат», значит надо редактировать xml. Я так раздел за разделом отлаживал. Еще проверь веб-сервис на валидность, можно через сайт

Хорошая идея. Я тоже как-то было так отлаживал. Избавлял от циклических ссылок в пространствах имен (1С этого не переваривает). Думал, что победа близка. wsdl успешно загрузился. А потом выяснилось, что сервис использует хитрый способ авторизации через установку каких-то заголовков (подробности уже плохо помню), а 1С эту фигню не поддерживает. Было очень обидно.

файл сохранила, пишет что неверный формат, можно ли какой-нибудь прогой его проверить. Сайт не подходит

Может кто знает, что может не нравиться в wsdl 1с, почему она может писать неверный формат?

и что такое  циклические ссылки в пространствах имен

SoapUI тебе в помощь. невалидный wsdl

wsdl валидный, я отправляла запрос с помощью soap-клиента, все нормально отрабатывает

дело именно в 1с, ей что-то не нравиться(

Нашла))))) Может кому поможет: ошибка была в том что в узле <portType name=»WSСервис.ИмяТочкиПодключения»><operation name=»Com»><documentation>яяя</documentation><input message=»tns:addCommentIn»/></operation>  не было выходного <output message=»tns:addCommentIn»/> и в самом начале было просто <?xml version=’1.0′?>, я поставила <?xml version=’1.0′ encoding=’UTF-8′?>

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
class ServiceClientBehavior : IEndpointBehavior, IClientMessageInspector
{
    public object BeforeSendRequest(ref Message request, IClientChannel channel)
    {
        XmlDocument doc = new XmlDocument();
        MemoryStream ms = new MemoryStream();
        XmlWriter writer = XmlWriter.Create(ms);
        request.WriteMessage(writer);
        writer.Flush();
        ms.Position = 0;
        doc.Load(ms);
        
        SignXml(doc);
        
        ms.SetLength(0);
        writer = XmlWriter.Create(ms);
        doc.WriteTo(writer);
        writer.Flush();
        ms.Position = 0;
        XmlReader reader = XmlReader.Create(ms);
        request = Message.CreateMessage(reader, int.MaxValue, request.Version);
 
        return null;
    }
    
    void SignXml(XmlDocument doc)
    {
        doc.PreserveWhitespace = true;
 
        // Получение элемента из тела сообщения
        var requestNode = doc.DocumentElement.ChildNodes[1].ChildNodes[0];
        var signRequestNode = SignRequest(requestNode);
 
        var body = requestNode.ParentNode;
        body.RemoveChild(requestNode);
        body.AppendChild(signRequestNode);
    }
    XmlNode SignRequest(XmlNode reqNode)
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.PreserveWhitespace = true;
        xmlDoc.AppendChild(xmlDoc.ImportNode(reqNode, true));
 
        var signedXml = new SignedXML(xmlDoc);
        signedXml.SigningKey = certificate.PrivateKey;
 
        KeyInfo keyInfo = new KeyInfo();
        keyInfo.AddClause(new KeyInfoX509Data(certificate));
        signedXml.KeyInfo = keyInfo;
 
        signedXml.Signature.Id = "SignatureId";
 
        #region Создание DataObject
        {
            XmlElement SignaturePropertiesRoot;
            XmlElement QualifyingPropertiesRoot;
            string xadesURI = "http://uri.etsi.org/01903/v1.3.2#";
            string dsURI = "http://www.w3.org/2000/09/xmldsig#";
 
            QualifyingPropertiesRoot = xmlDoc.CreateElement("xades", "QualifyingProperties", xadesURI);
            QualifyingPropertiesRoot.SetAttribute("Target", "#SignatureId");
 
            SignaturePropertiesRoot = xmlDoc.CreateElement("xades", "SignedProperties", xadesURI);
            SignaturePropertiesRoot.SetAttribute("Id", "SignedPropertiesId");
 
            XmlElement SignedSignatureProperties = xmlDoc.CreateElement("xades", "SignedSignatureProperties", xadesURI);
 
            XmlElement timestamp = xmlDoc.CreateElement("xades", "SigningTime", xadesURI);
            timestamp.InnerText = XmlConvert.ToString(DateTimeOffset.Now);
            SignedSignatureProperties.AppendChild(timestamp);
 
            XmlElement SigningCertificate = xmlDoc.CreateElement("xades", "SigningCertificate", xadesURI);
            XmlElement Cert = xmlDoc.CreateElement("xades", "Cert", xadesURI);
            XmlElement CertDigest = xmlDoc.CreateElement("xades", "CertDigest", xadesURI);
 
            XmlElement DigestMethod = xmlDoc.CreateElement("ds", "DigestMethod", dsURI); DigestMethod.SetAttribute("Algorithm", "http://www.w3.org/2001/04/xmldsig-more#gostr3411");
            XmlElement DigestValue = xmlDoc.CreateElement("ds", "DigestValue", dsURI); DigestValue.InnerText = ComputeGostHash(this.ClientCertificate.RawData);
            CertDigest.AppendChild(DigestMethod);
            CertDigest.AppendChild(DigestValue);
            Cert.AppendChild(CertDigest);
 
            XmlElement IssuerSerial = xmlDoc.CreateElement("xades", "IssuerSerial", xadesURI);
            XmlElement X509IssuerName = xmlDoc.CreateElement("ds", "X509IssuerName", dsURI); X509IssuerName.InnerText = GetIssuerName(certificate);
            XmlElement X509SerialNumber = xmlDoc.CreateElement("ds", "X509SerialNumber", dsURI); X509SerialNumber.InnerText = GetSerialNumber(certificate);
            IssuerSerial.AppendChild(X509IssuerName);
            IssuerSerial.AppendChild(X509SerialNumber);
            Cert.AppendChild(IssuerSerial);
 
            SigningCertificate.AppendChild(Cert);
            SignedSignatureProperties.AppendChild(SigningCertificate);
 
            SignaturePropertiesRoot.AppendChild(SignedSignatureProperties);
            QualifyingPropertiesRoot.AppendChild(SignaturePropertiesRoot);
            DataObject dataObject = new DataObject
            {
                Data = QualifyingPropertiesRoot.SelectNodes("."),
            };
            signedXml.AddObject(dataObject);
        }
        #endregion
 
        signedXml.SignedInfo.SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
        signedXml.SignedInfo.CanonicalizationMethod = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
 
        var reference = new Reference();
        reference.Uri = "#RequestId";
        reference.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
        reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
        reference.AddTransform(new XmlDsigExcC14NTransform());
        signedXml.AddReference(reference);
 
        reference = new Reference();
        reference.Uri = "#SignedPropertiesId";
        reference.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
        reference.Type = "http://uri.etsi.org/01903#SignedProperties";
        reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
        reference.AddTransform(new XmlDsigExcC14NTransform());
        signedXml.AddReference(reference);
 
        signedXml.ComputeSignature();
 
        XmlElement signatureNode = signedXml.GetXml();
        xmlDoc.DocumentElement.PrependChild(xmlDoc.ImportNode(signatureNode, true));
 
        if (!VerifyXml(xmlDoc))
            throw new Exception("Подпись не проходит проверку.");
        return reqNode.OwnerDocument.ImportNode(xmlDoc.DocumentElement, true);
    }
}

WSDL (англ. Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML.

После успешной публикаций web сервиса 1С  нужно проверить доступность и корректность файла WSDL.  Для этого нужно запустить любой браузер  по адресу

http://www.ИмяСайта.ru/ПутьНаСайте/ИмяФайла.1cws?wsdl

Например,  Запустите работающий сервис сбербанка  http://www.cbr.ru/dailyinfowebserv/dailyinfo.asmx?WSDL

Браузер должен отобразить некий файл XML  и не выдавать ошибку или пустую страницу или невнятный текст на любой кодировке.

Существуют 2 способа загрузки WSDL файл веб- сервиса в 1С:

  1. Статическая ссылка  (Добавление WS-ссылки 1С )  – WS-ссылки 1С это объект 1С, который расположен в конфигурации в ветке Общие/WS-ссылки 1С.  Добавление ссылки на веб сервис производится автоматически. Нажмите правой кнопкой на ветку, выберите Добавить, укажите путь к WSDL описанию веб сервиса.  В результате добавления WS-ссылки 1С будет создана автоматически такая же структура, как создается вручную при добавлении Web сервиса.
  2.  Динамическая ссылка ( WsСоединение )  – В этом случае на импорт WSDL в момент создания объекта будет потрачено определенное время

Подробнее  о динамических и статических ссылках по материалам из диска ИТС я написал    здесь

Часто при загрузке  WSDL файл  статически (WS-ссылки)  или динамически (WsСоединение)  может возникать ошибку типа нет соединения с веб сервисом  или не верный формат данных в файле WSDL

Особенность загрузки WSDL в 1С в том, что валидные схемы могут не загружаться. Никакого встроенного валидатора нет, поэтому приходится искать ошибку методом деструктивного анализа, последовательно уменьшая количество элементов в схеме.

Веб -программисты  используют программу Web Services Validation Tool for WSDL and SOAP для создания, проверки, передачи и приема SOAP-сообщений.

  Вот например, файл WSDL( см рис 1)  в 1С не загружается и выдается ошибка о неверном формате.  Сначала я  удалил описание веб-сервиса в XML-редакторе и ничего не получилось, но когда  я убрал , все что связано со словами  «policies» удалось загружать

Рис 1. Не верный формат WSDL -файла для загрузки в 1С

Старый
06.02.2015, 11:22

 

#1
 

Участник

Аватар для Bega

 

Регистрация: 18.08.2005

Адрес: Москва

Вызов веб-сервиса Ax 2012 R3 из 1C 8.2


Друзья, кому-нибудь удавалось вызвать custom веб-сервис, реализованный на стороне Ax из 1С? При указании ссылки на WSDL, 1С выдает ошибку «Неверный формат». Судя по всему Ax генерит либо неправильный либо слишком сложный WSDL. Не удается даже для простейшего сервиса (операция принимает и возвращает строку).

Есть какой-то способ изменить формирование этого файла WSDL в Ax?

На форумах 1С есть информация, могут не нравится названия некоторых тэгов. Если сравнить с WSDL, генерируемый из Visual Studio, то получается что он сильно отличается от формата Ax.


Последний раз редактировалось Bega; 06.02.2015 в 11:30.

Старый
06.02.2015, 11:29

 

#2
 

Участник

 

Регистрация: 28.11.2005

Адрес: Москва

Записей в блоге: 3

Судя по тому, что другие системы спокойно «проглатывают» генерируемый Аксаптой WSDL, он генерится правильный и не шибко сложный, скажем, для генерации proxy-классов по нему. Видимо, дело все же в 1С. Может, из 1С дергать не веб-сервисы, а старый добрый .NET Business Connector? С ним тоже есть определенные заморочки, но в целом успешные примеры есть.

Старый
06.02.2015, 11:41

 

#3
 

Участник

Аватар для Bega

 

Регистрация: 18.08.2005

Адрес: Москва

Цитата:

Сообщение от gl00mie
Посмотреть сообщение

Судя по тому, что другие системы спокойно «проглатывают» генерируемый Аксаптой WSDL, он генерится правильный и не шибко сложный, скажем, для генерации proxy-классов по нему. Видимо, дело все же в 1С. Может, из 1С дергать не веб-сервисы, а старый добрый .NET Business Connector? С ним тоже есть определенные заморочки, но в целом успешные примеры есть.

Проверил сайтом www.wsdl-analyzer.com и получил предупреждения:
1. http://tempuri.org/ is used by some samples and templates. You should use a unique targetNamespace.
2. Bindings — SOAP12 warning (рекомендация использовать 1.1)

«другие системы» — это какие? мне конечно удалось вызвать из Ax2009 и Visual Studio, ног это все microsoft.

WSDL этот ядром генерится или есть где-то код на X++?

Старый
06.02.2015, 11:47

 

#4
 

Участник

Аватар для Morpheus

Соотечественники

 

Регистрация: 30.03.2005

Адрес: Київ-København-Düsseldorf

Попробуйте создать в Visual Studio прокси dll и вызывать ее методы из 1С.

Старый
06.02.2015, 12:15

 

#5
 

Участник

Аватар для Bega

 

Регистрация: 18.08.2005

Адрес: Москва

Цитата:

Сообщение от Morpheus
Посмотреть сообщение

Попробуйте создать в Visual Studio прокси dll и вызывать ее методы из 1С.

Да это понятно, но некрасиво.

Старый
06.02.2015, 12:21

 

#6
 

Участник

 

Регистрация: 06.03.2007

Адрес: москва

WSDL возвращает SOAP сервис. Данные по binding он берет из настроек app.config или web.config.
DAX формирует файлы C# затем компилирует их и разворачивает как сервис. Посмотреть как генерятся файлы для сервиса. можно в классах Aif.
Как пример:

X++:

AifServiceConfigGenerator

X++:

AifServiceGenerationManager

Последний раз редактировалось maldini; 06.02.2015 в 12:31.

За это сообщение автора поблагодарили: Bega (5).

Старый
06.02.2015, 12:48

 

#7
 

Участник

 

Регистрация: 28.11.2005

Адрес: Москва

Записей в блоге: 3

Цитата:

Сообщение от Bega
Посмотреть сообщение

Цитата:

Сообщение от Morpheus
Посмотреть сообщение

Попробуйте создать в Visual Studio прокси dll и вызывать ее методы из 1С.

Да это понятно, но некрасиво.

С каких это пор?

Старый
06.02.2015, 12:51

 

#8
 

Участник

1C

 

Регистрация: 13.01.2006

Адрес: Республика Татарстан, г. Казань

Встречался в 1С с проблемой, когда в WSDL-описании было зацикливание директив импорта.

Другие приложения «кушают» это нормально, 1С не умеет.

Можно попробовать сохранить WSDL-описание в файл, почистить ручками и в 1С его скормить, дальше попробовать подергать методы сервиса, может поможет.

Сталкивался с этой проблемой на платформе 8.2, на 8.3 не пробовал, может починили.

__________________
Айрат Вильданов.
skype: vildanov.a

За это сообщение автора поблагодарили: Bega (3).

Старый
06.02.2015, 13:30

 

#9
 

Участник

Аватар для Bega

 

Регистрация: 18.08.2005

Адрес: Москва

Цитата:

Сообщение от gl00mie
Посмотреть сообщение

С каких это пор?

Дополнительный программный код и его поддержка. И зачем тогда декларируемая Ax система интеграции через web-сервисы.

  • Ошибка разбор слова корень
  • Ошибка разблокировки загрузчика xiaomi 1004
  • Ошибка разбить на слоги
  • Ошибка радуги 3 0x0001000b
  • Ошибка радуга 0 0x00000209