Вызов веб-службы, которая принимает массив или список классов в Java - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу создать веб-сервис с использованием C #. В веб-сервисе у меня есть веб-метод, который принимает список определенного класса:

[DataContract]
public class CompositeType
{
    string stringValue = "Hello ";

    [DataMember]
    public string StringValue
    {
        get { return stringValue; }
        set { stringValue = value; }
    }

    [DataMember]
    public List<Product> Products { get; set; }
}

[DataContract]
public class Product
{
    [DataMember]
    public int PID { get; set; }

    [DataMember]
    public string PName { get; set; }
}

и мой веб-метод:

[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);

Я хочу опубликовать этот сервис, используя BasicHttpBinding, который пользователи Java могут также вызывать. Теперь, когда программиста на Java нет рядом со мной, я хотел бы попросить тех, у кого есть опыт, сделать это:

1) Могут ли Java-программисты вызывать мой веб-метод, который принимает List<Product>?

2) Должен ли я изменить List на Array?

Спасибо за ваш вклад

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Как и в случае .Net-клиента, вызывающего WCF с использованием инструмента Svcutil, большинство пользователей Java используют библиотеку asis2, которая является механизмом веб-службы для вызова веб-службы.
WebService - это спецификация, которую любой сервис, который реализует, может называться WebService. они используют сообщение SOAP на основе XML для общения. они используют WSDL для описания деталей сервиса, который используется для генерации прокси-класса клиента. Причина, по которой WCF может вызываться через границы служб различными платформами, заключается в том, что он также является веб-службой. Хотя на разных платформах могут быть разные типы данных, пока мы указываем, как представить его в XML и как его сериализовать, служба может корректно вызываться другими платформами. По умолчанию список указывается для сериализации с использованием единицы. массив.

0 голосов
/ 07 ноября 2018

Предположительно, ваш HTTP API сериализует это как JSON (или, может быть, XML). В любом случае, библиотеки, такие как Jackson, могут справиться с этим просто отлично, и большинство REST-клиентов даже обработают эту часть автоматически. Соответствие стандартам является правилом, и поэтому, если ваш List<Product> преобразован в / из обычного массива JSON, все должно работать без сбоев.

JSON не имеет отдельных типов списков, только простой массив, поэтому сериализация на основе массива или списка должна быть эквивалентной.

Как примечание, большинство API-интерфейсов используют camelCase или snake_case для свойств, поэтому ожидается, что ваши имена свойств (в JSON) будут stringValue, products, pid и pName .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...