2017-03-29 20 views
4

ich in der Lage war zu Mind Body api zu verbinden und einen einfachen Befehl ausführen, um alle Clients Daten zu erhaltenWie mit API-Antwort umgehen

from Helper.ClientService import ClientServiceCalls 

calls = ClientServiceCalls() 
clients = calls.GetAllClients() 
print(clients) 

der Server mit diesen Informationen reagieren:

(GetClientsResult){ 
    Status = "Success" 
    ErrorCode = 200 
    XMLDetail = "Full" 
    ResultCount = 4503 
    CurrentPageIndex = 0 
    TotalPageCount = 181 
    Clients = 
     (ArrayOfClient){ 
     Client[] = 
      (Client){ 
       MobileProvider = None 
       AppointmentGenderPreference = "None" 
       Gender = "Female" 
       IsCompany = False 
       LiabilityRelease = False 
       PromotionalEmailOptIn = True 
       CreationDate = 2017-02-23 00:00:00 
       Liability = 
        (Liability){ 
        IsReleased = False 
        AgreementDate = None 
        ReleasedBy = None 
        } 
       UniqueID = 100015484 
       ID = "100015484" 
       FirstName = "Sdfoij" 
       LastName = "[asodfj" 
       EmailOptIn = True 
       State = "CA" 
       Country = "US" 
       BirthDate = None 
       FirstAppointmentDate = 2017-03-03 00:00:00 
       HomeLocation = 
        (Location){ 
        SiteID = -99 
        BusinessDescription = ""The MINDBODY Health Club Demo is awesome." - Anonymous (but probably someone cool and smart)" 
        AdditionalImageURLs = "" 
        FacilitySquareFeet = None 
        TreatmentRooms = None 
        HasClasses = True 
        PhoneExtension = None 
        ID = 1 
        Name = "Clubville" 
        } 
       PhotoURL = "https://clients.mindbodyonline.com/studios/DemoAPISandboxRestore/clients/100015484_large.jpg?v=98" 
       IsProspect = False 
       Status = "Active" 
       ContactMethod = 1 
      }.... **and continue printing other client informations** 

    } 
} 

jetzt das Problem ist, ich diese Informationen daraus extrahieren möchten,

Client Email, Client Name, Client Phone Number, Client Status (active or inactive), Client Birthday, Client Address, Most Recent Visit Date, Most Recent Visit Description, Start Date, Custom Field(s) 

Aber ich weiß nicht, welche Bibliothek ich verwenden kann, durch diese Ausgabe zu analysieren, denke ich über schöne Suppe, aber ich bin nicht wirklich sicher,

Ich bin wirklich Anfänger mit Apis arbeiten, also wenn jemand mir eine Idee geben könnte, wie dies zu tun wäre, wäre es wirklich toll .

+0

Das gleiche hier Josh, ich bin wirklich verwirrt, wie man mit dieser API umgeht, trotzdem, wenn Sie irgendwelche Informationen haben, die mich auf den richtigen Weg bringen könnten, zögern Sie bitte nicht, es zu erwähnen. Danke – Ayoub

+0

Meine Vermutung ist, dass sie [SOAP] (https://en.wikipedia.org/wiki/SOAP) verwenden, da einer der ClientService das Paket Suds verwendet. Vielleicht möchten Sie einen XML-Parser für die Antwort betrachten. –

+0

Checkout this link [sie] (https://developers.mindbodyonline.com/Documentation/WorkingWithSOAP#xmldetail) Es hat ein bisschen eine Beschreibung ihrer XML-Antwort. –

Antwort

3

OK, ich habe eine Suche auf MindBody WSDL in den Googs und habe den folgenden Link zurück: https://api.mindbodyonline.com/0_5/SiteService.asmx?wsdl. Wenn man sich den Code in den API-Beispielen anschaut, sieht es so aus, als würden sie SOAP verwenden. Meine Empfehlung ist, dass Sie versuchen, die folgenden:

from suds.client import Client 
from Helper.ClientService import ClientServiceMethods 
calls = ClientServiceMethods() 
clients = calls.GetAllClients() 
client_dict = Client.dict(clients) 

Oder nehmen Sie einen Blick auf diese link für eine Antwort zu nehmen und es in ein dict drehen.

+0

von der Ausführung Ihres Beispielcodes habe ich TypeError: 'NoneType' Objekt ist nicht iterierbar – Ayoub

+0

keine Gedanken ?? – Ayoub

+0

Hmm. OK, ich habe diese API nicht. Also kann ich den Code nicht direkt ausführen. Hier ist was ich vorschlagen würde. Führen Sie 'type (clients)' und 'dir (clients)' aus und lassen Sie mich wissen, welche Ergebnisse Sie erhalten. Möglicherweise können Sie direkt auf die gewünschten Felder zugreifen. –