Подключение к WEB-сервису на 1с

 
 
 
Сообщения:1
Пытаюсь подключиться к WEB сервису на 1С.

Нашел пример в интернете по созданию своего WEB сервия на Java и подключению к нему. После чего решил переписать этот вариант под запрос к 1С. В итоге функция на сервисе должна вернуть строку.

Основной класс
package ru.WebConnect.client;
 
// нужно, чтобы получить wsdl описание и через него
// дотянуться до самого веб-сервиса
import java.net.URL;
import java.net.Authenticator;
// такой эксепшн возникнет при работе с объектом URL
import java.net.MalformedURLException;
import java.net.PasswordAuthentication;
 
// классы, чтобы пропарсить xml-ку c wsdl описанием
// и дотянуться до тега service в нем
import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Service;
 
import ru.WebConnect.ws.HelloWebService;
 
public class HelloWebServiceClient {
 
    public static void main(String[] args) throws MalformedURLException {
        
        
        // создаем ссылку на wsdl описание
        URL url = new URL("http://localhost:1515/JavaTest/ws/LoadNomen.1cws?wsdl");
 
        // Параметры следующего конструктора смотрим в самом первом теге WSDL описания - definitions
        // 1-ый аргумент смотрим в атрибуте targetNamespace
        // 2-ой аргумент смотрим в атрибуте name
        QName qname = new QName("http://localhost/JavaTest/", "NewWDS");
        
        // Теперь мы можем дотянуться до тега service в wsdl описании,
        Service service = Service.create(url, qname);
        
        // а далее и до вложенного в него тега port, чтобы
        // получить ссылку на удаленный от нас объект веб-сервиса
        HelloWebService hello = service.getPort(HelloWebService.class);
 
        
 
        // Ура! Теперь можно вызывать удаленный метод
        System.out.println(hello.LoadNomen());//getHelloString("JavaRush"));
    }
 
}


Код интерфесай

package ru.WebConnect.ws;
 
// это аннотации, т.е. способ отметить наши классы и методы,
// как связанные с веб-сервисной технологией
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
 
// говорим, что наш интерфейс будет работать как веб-сервис
@WebService
// говорим, что веб-сервис будет использоваться для вызова методов
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface HelloWebService {
 
    @WebMethod
    public String LoadNomen();
}


Вот как выглядить XML

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://localhost/JavaTest/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://localhost/JavaTest/" name="NewWDS" targetNamespace="http://localhost/JavaTest/">
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="http://localhost/JavaTest/" targetNamespace="http://localhost/JavaTest/" elementFormDefault="qualified">
<xs:element name="LoadNomen">
<xs:complexType>
<xs:sequence/>
</xs:complexType>
</xs:element>
<xs:element name="LoadNomenResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="LoadNomenRequestMessage">
<part name="parameters" element="tns:LoadNomen"/>
</message>
<message name="LoadNomenResponseMessage">
<part name="parameters" element="tns:LoadNomenResponse"/>
</message>
<portType name="NewWDSPortType">
<operation name="LoadNomen">
<input message="tns:LoadNomenRequestMessage"/>
<output message="tns:LoadNomenResponseMessage"/>
</operation>
</portType>
<binding name="NewWDSSoapBinding" type="tns:NewWDSPortType">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="LoadNomen">
<soapbind:operation style="document" soapAction="http://localhost/JavaTest/#NewWDS:LoadNomen"/>
<input>
<soapbind:body use="literal"/>
</input>
<output>
<soapbind:body use="literal"/>
</output>
</operation>
</binding>
<binding name="NewWDSSoap12Binding" type="tns:NewWDSPortType">
<soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="LoadNomen">
<soap12bind:operation style="document" soapAction="http://localhost/JavaTest/#NewWDS:LoadNomen"/>
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
</binding>
<service name="NewWDS">
<port name="NewWDSSoap" binding="tns:NewWDSSoapBinding">
<documentation>
<wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1"/>
</documentation>
<soapbind:address location="http://localhost:1515/JavaTest/ws/LoadNomen.1cws"/>
</port>
<port name="NewWDSSoap12" binding="tns:NewWDSSoap12Binding">
<soap12bind:address location="http://localhost:1515/JavaTest/ws/LoadNomen.1cws"/>
</port>
</service>
</definitions>


ПО итогу программа выдает ошибку

Exception in thread "main" javax.xml.ws.WebServiceException: Undefined port type: {http://ws.WebConnect.ru/}HelloWebService
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(Unknown Source)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(Unknown Source)
    at javax.xml.ws.Service.getPort(Unknown Source)
    at ru.WebConnect.client.HelloWebServiceClient.main(HelloWebServiceClient.java:36)
 
Модераторы:wedens
Сейчас эту тему просматривают:Нет