+ Antworten
Ergebnis 1 bis 6 von 6
  1. #1
    Registriert seit
    Sep 2012
    Ort
    Bobenheim-Roxheim
    Beiträge
    40

    Standard SOAP Anfrage an Externen Server

    Hallo Jungs,

    Ich hab IPS bei mir auf der Arbeit vor nem halben Jahr vorgestellt und nun integrieren wir es immer mehr und an mehreren Standorten.
    Hilfreich wenn man die Software seit bald 6 Jahren daheim schon nutzt aber Ok das ist Off-Topic...

    Folgendes Problem:
    Einer unserer Maschinenhersteller bietet mir Zugriff auf seine Alarmliste via SOAP
    Nun möchte ich das Ganze natürlich in IPS haben um dann bei bestimmten Alarmen entsprechend zu reagieren.
    Um die korrekte SOAP Anfrage rauszufinden habe ich das Programm SoapUI getestet:
    In Soap UI sieht die Raw-Anfrage wie folgt aus:

    Code:
    POST http://192.168.16.189:8081/ISPWebService/IspOrderWs.svc HTTP/1.1
    Accept-Encoding: gzip,deflate
    Content-Type: application/soap+xml;charset=UTF-8;action="http://wuh-group.com/ISP/IspOrderWs/getAlarms"
    Content-Length: 506
    Host: 192.168.16.189:8081
    Connection: Keep-Alive
    User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
    
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:isp="http://wuh-group.com/ISP/">
       <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:Action>http://wuh-group.com/ISP/IspOrderWs/getAlarms</wsa:Action><wsa:To>http://192.168.16.189:8081/ISPWebService/IspOrderWs.svc</wsa:To></soap:Header>
       <soap:Body>
          <isp:getAlarms>
             <!--Optional:-->
             <isp:machineCode>VAR4</isp:machineCode>
             
          </isp:getAlarms>
       </soap:Body>
    </soap:Envelope>
    und die Antwort in etwa so:
    Code:
    HTTP/1.1 200 OK
    Date: Tue, 16 Jul 2019 13:48:49 GMT
    Server: Apache/2.2.21 (Win32) mod_aspdotnet/2.2
    X-AspNet-Version: 2.0.50727
    Cache-Control: private
    Content-Length: 1368770
    Content-Type: application/soap+xml; charset=utf-8
    Keep-Alive: timeout=5, max=100
    Connection: Keep-Alive
    
    <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://wuh-group.com/ISP/IspOrderWs/getAlarmsResponse</a:Action></s:Header><s:Body><getAlarmsResponse xmlns="http://wuh-group.com/ISP/"><getAlarmsResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><StdAlarmResDto><AlarmNo>777</AlarmNo><AlarmText i:nil="true"/><EndTimeIso i:nil="true"/><EndTs>0</EndTs><MachineCode>VAR4</MachineCode><Modul>1</Modul><ModulNo>5</ModulNo><StartTimeIso>2019-06-07T11:00:07</StartTimeIso><StartTs>1559898007</StartTs><TextNo>2157</TextNo><TextRepl1>800</TextRepl1><TextRepl2>0</TextRepl2></StdAlarmResDto><StdAlarmResDto><AlarmNo>787</AlarmNo><AlarmText i:nil="true"/><EndTimeIso i:nil="true"/><EndTs>0</EndTs><MachineCode>VAR4</MachineCode><Modul>1</Modul><ModulNo>17</ModulNo><StartTimeIso>
    Meine Frage ist nun wie kann ich diese SoapRequest senden sodass ich auch ne Antwort in IPS bekomme und diese dann auswerten kann? kann mir einer von euch weiterhelfen?

    Beste Grüße,
    Thomas

  2. #2
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,541

    Leider hast du im falschen Bereich geschrieben, ich verschiebe das.

    Zum Thema:
    In PHP gibt es eine fertige SOAP Schnittstelle.
    PHP: SoapClient::SoapClient - Manual
    Nutze ich z.b. auch intensiv im Fritzbox-Project.
    Michael
    on Win10VM (ESXi): I7, 32GB RAM, HW-RAID5, 2xSat | HW: pivccu + ca.130 Geräte (ca.550ch), EM1000, CUL, 1Wire, FritzBox Cable, Android Phone + Tablet, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, RoundCube, Win2016 Ess., MediaPortal, Kodi

  3. #3
    Registriert seit
    Sep 2012
    Ort
    Bobenheim-Roxheim
    Beiträge
    40

    Hallo Michael,

    Danke fürs Verschieben muss mich da verklickt haben
    Bin schon länger am rumprobieren mit dem von dir verlinkten Inhalt komme aber auf keinen grünen Zweig.
    Finde nicht mal einen Ansatz wo und wie meine Daten da reinpassen.

  4. #4
    Registriert seit
    Sep 2012
    Ort
    Bobenheim-Roxheim
    Beiträge
    40

    ein bisschen Weiter bin ich jetzt schon gekommen:

    Mit folgendem Code
    Code:
    <?
       // WSDL-URL_Adresse 
       // Kann lokal liegen oder per Endpoint (wie in diesem Beispiel) bezogen werden
       $client = new SoapClient("http://192.168.16.189:8081/ISPWebService/IspOrderWs.svc?wsdl");
        
       // Änderung des Web Service Endpoints 
       $client->__setLocation('http://192.168.16.189:8081/ISPWebService/IspOrderWs.svc');
      
      
    	  echo "<h3>Functions</h3>";
    $functions = $client->__getFunctions();
    foreach($functions as $d){
        echo "</br>".$d;
    }
    echo "</br><h3>Types</h3>";
    $types = $client->__getTypes();
    foreach($types as $t)
    {
        echo "</br>".$t;
    }
    ?>
    bekomme ich folgendes:
    Code:
     
    B]Functions[/B]
    getAlarmsResponse getAlarms(getAlarms $parameters)
    
    Types
    struct getAlarms { string machineCode; string startTimeMin; string startTimeMax; boolean openOrClosed; }
    jetzt würde ich gerne die Function getAlarms aufrufen und ihr den machineCode "VAR4" mitgeben.
    weiß aber leider nicht wie...

  5. #5
    Registriert seit
    Sep 2012
    Ort
    Bobenheim-Roxheim
    Beiträge
    40

    Ich komme einfach nicht weiter... Gibt es denn keinen der hiermit Erfahrung hat und mir ein paar Denkanstöße geben möchte?

  6. #6
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,541

    Ich habe bisher immer die nicht wsdl Methode benutzt, darum habe ich da auch keine Praktische Erfahrung.
    Aber Parameter werden mit new SoapParam erzeugt und können in Funktionen übergeben werden.
    PHP: SoapParam::SoapParam - Manual
    Eine Funktion kannst du z.b. so aufrufen:
    PHP-Code:
    $client->getAlarms(
    new 
    SoapParam($machineCode,'machineCode'),
    new 
    SoapParam($startTimeMin,'startTimeMin'),
    new 
    SoapParam($startTimeMax,'startTimeMax'),
    new 
    SoapParam(true,'openOrClosed')
    ); 
    Michael
    Geändert von Nall-chan (24.07.19 um 10:27 Uhr)
    on Win10VM (ESXi): I7, 32GB RAM, HW-RAID5, 2xSat | HW: pivccu + ca.130 Geräte (ca.550ch), EM1000, CUL, 1Wire, FritzBox Cable, Android Phone + Tablet, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, RoundCube, Win2016 Ess., MediaPortal, Kodi

Ähnliche Themen

  1. SOAP anfrage über Soap-Client Excel(VBA)
    Von bastianstrauss im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 3
    Letzter Beitrag: 07.03.12, 17:20
  2. ID in Soap-Reply vorhanden, im Server nicht
    Von saschahb im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 0
    Letzter Beitrag: 02.11.09, 17:47
  3. SOAP - Befehle vom APACHE-Server aufrufen
    Von tgusi74 im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 5
    Letzter Beitrag: 26.05.09, 23:46
  4. Anfrage
    Von wesseli im Forum Allgemeine Diskussion
    Antworten: 8
    Letzter Beitrag: 11.01.08, 08:49
  5. Anfrage
    Von unger im Forum Allgemeine Diskussion
    Antworten: 52
    Letzter Beitrag: 13.11.05, 10:20