Einzelnen Beitrag anzeigen

fabi17

Registriert seit: 1. Mai 2017
44 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

HTTP Post Wawision

  Alt 10. Dez 2017, 23:58
Guten Abend,

ich würde gerne auf die Schnittstelle einer Warenwirtschaft (Wawision) zugreifen.

Die Schnittstellenbeschreibung ist hier:
https://www.wawision.de/helpdesk/api

und hier der Auszug aus der API Beschreibung um einen Auftrag anzulegen:

Code:
<?php
$hash = generateHash();

$xml = "<kundennummer>23243</kundennummer>";

$output_xml = SendRequest("AuftragCreate",$xml,$hash);
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++)
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash;
 
    $xml = '<?xml version="1.0" encoding="UTF-8"?>
            <request>
                <status>
                    <function>'.$methodname.'</function>
                </status>
                <xml>'.$xml.'</xml>
            </request>';
 
    $data = array('xml' => $xml, 'md5sum' => md5($xml));
 
    // use key 'http' even if you send the request to https://...
    $options = array(
                   'http' => array(
                   'header' => "Content-type: application/x-www-form-urlencoded\r\n",
                   'method' => 'POST',
                   'content' => http_build_query($data),
                   ),
               );
 
    $context = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    return $result;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Mein Code ist wie folgt:

Delphi-Quellcode:
XML := TStringlist.Create();
  XML.Add(Memo2.Text);
  Methodname := 'AuftragCreate';
  hash := 'xxxxxx';
  http := TIdHTTP.Create(nil);

  http.HandleRedirects := true;

  http.ReadTimeout := 500000;

  http.Request.Accept := 'http';

  http.Request.ContentType := 'application/x-www-form-urlencoded\r\n';

  Memo1.Text := http.Post('http://www.wawision.biz/kis/RwN9rBC4B9PQDMtV5geAXcrxB9yKdE/www/index.php?module=api&action='+Methodname+'&hash='+hash+'', XML)
In das Memo2 habe ich jetzt testweise alle möglichen xml varianten eingetippt, um die kundennummer hinzuzfügen <kundennummer>10000</kundennummer>

Leider wird hier immer nur ein Auftrag ohne der Kundennummer angelegt.
Bin wirklich ratlos und hoffe, jemand kann helfen.

Lg
  Mit Zitat antworten Zitat