Vrácení strukturovaných dat z webové služby   otázka

Offtopic

Dobrý den,

nevím, zda to sem patří, ale přesto rád bych požádal o radu. Jsem začátečník a nevím, kde jinde to zkusit... Heldal jsem hodně na internetu, ale nenašel (neuměl najít).

Mám webovou službu (konkrétně metodu/operaci GetSports) a chci z ní vrátit strukturovaná data (např. seznam sportovišť a jejich názvů, kapacity, ceny atd). Z tabulky mi vrátí správný počet řádků, ale jen hodnotu z 1. sloupce. Totéž je pro tabulku v datasetu + výsledné XML neodpovídá tomu, jaký formát má XML u zákazníka.

Proto jsem udělal vrácení typu List(Of Sport), kde Sport je třída s vlastnostmi Název, Kapacita atd.

jenže ani výsledné WSDL neobsahuje strukturu výstupu, ani výsledek (např. SoapUI) nevrací tudíž žádná data.

Prosím odborníky o jakoukoliv radu! Případně z požadovaného XML nejspíš zjistíte, zda použít ještě jiný způsob vrácení.

Zde je celý program, za ním požadované XML zákazníka:

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1

    '** Seznam činností (sportovišť) k objektu (areálu) - parent = id and type = 3
    <WebMethod()> _
    Public Function getSports(ByVal objectId As Integer) As List(Of Sport)
        Dim xit_db_data As DataTable = New DataTable
        Dim x_db_row As DataRow
        Dim xit_data As DataTable = New DataTable("DATA")
        Dim x_row As DataRow
        Dim xstr As String = ""
        Dim xselect As String = ""
        Dim DS As DataSet = New DataSet("ResponseX")
        '* Připojení DB
		...
        '* Naplnit výstupní tab.:
        Dim xRet As New List(Of Sport)()
        For Each x_db_row In xit_db_data.Rows
            Dim xx As New Sport()
            xx.AddSport(x_db_row("id"), 10, x_db_row("descr"), True, 1)
            xret.Add(xx)
        Next
        DS.Tables.Add(xit_data)
        Return xRet
        'Return DS
    End Function
	
	
End Class

'** Struktura 1 sportu (pro getSports)
Public Class Sport
    Private _id As String
    Private _lengthOfMajorReservation As Int16
    Private _name As String
    Private _tariffForPerson As Boolean
    Private _unitOfTariff As Int16

    Public Sub New()
    End Sub

    Public Sub AddSport(ByVal id As String, ByVal lengthOfMajorReservation As Int16, _
                   ByVal name As String, ByVal tariffForPerson As Boolean, ByVal unitOfTariff As Int16)
        Me._id = id
        Me._lengthOfMajorReservation = lengthOfMajorReservation
        Me._name = name
        Me._tariffForPerson = tariffForPerson
        Me._unitOfTariff = unitOfTariff
    End Sub
    Public ReadOnly Property id() As String
        Get
            Return Me._id
        End Get
        'Set(ByVal value As String)
        '    Me.id = value
        'End Set
    End Property

    Public ReadOnly Property lengthOfMajorReservation() As Int16
        Get
            Return Me._lengthOfMajorReservation
        End Get
    End Property

    Public ReadOnly Property name() As String
        Get
            Return Me._name
        End Get
    End Property

    Public ReadOnly Property tariffForPerson() As Boolean
        Get
            Return Me._tariffForPerson
        End Get
    End Property

    Public ReadOnly Property unitOfTariff() As Int16
        Get
            Return Me._unitOfTariff
        End Get
    End Property
End Class

Požadované XML zákazníka

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<getSportsResponse xmlns="http://tempuri.org/">
<getSportsResult>
<state>0</state>
<message />
<sportInfo>
	<sportInfoItem>
		<id>123456_123</id>
		<lengthOfMajorReservation>10</lengthOfMajorReservation>
		<tariffForPerson>true</tariffForPerson>
		<name>Fotbal</name>
		<unitOfTariff>1</unitOfTariff>
		<price>790</price>
	</sportInfoItem>
	<sportInfoItem>
		<id>123457</id>
		<lengthOfMajorReservation>10</lengthOfMajorReservation>
		<tariffForPerson>true</tariffForPerson>
		<name>Hokej</name>
		<unitOfTariff>1</unitOfTariff>
		<price>1450</price>
	</sportInfoItem>
	<sportInfoItem>
		<id>234567</id>
		<lengthOfMajorReservation>10</lengthOfMajorReservation>
		<tariffForPerson>true</tariffForPerson>
		<name>Basket</name>
		<unitOfTariff>1</unitOfTariff>
		<price>750</price>
	</sportInfoItem>
</sportInfo>
</getSportsResult>
</getSportsResponse>
</soap:Body>
</soap:Envelope>
nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

A proč nepoužijete jako výstup JSON formát?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

našel jsem příklad. Podívám se na to. Děkuji!

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback