Results 1 to 10 of 10

Thread: van PHP naar Delphi

  1. #1
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509

    van PHP naar Delphi

    ik heb een stukje PHP code, en zou willen weten hoe dit om te zetten is naar Delphi ( bv met behulp van Indy )
    via Google heb ik wel e.e.a. gevonden, maar kan nergens vinden hoe te handelen met de username en password

    kan iemand mij a.u.b. op weg helpen (ik gebruik XE2 VCL) ?

    PHP Code:
        $username '#username#';
        
    $password '#password#';
        
    $customerID '0';
        
    $options = array();

        
    //Send request
        
    $curl curl_init('http://abc.def.com/api/v1/products/list');
        
    curl_setopt($curlCURLOPT_POSTtrue);
        
    curl_setopt($curlCURLOPT_POSTFIELDS, array(
            
    'Username' => $username,
            
    'Password' => $password,
            
    'CustomerID' => $customerID,
            
    'Options' => json_encode($options),
        ));
        
    curl_setopt($curlCURLOPT_SSL_VERIFYHOST0);
        
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);
        
    $result curl_exec($curl);
        
    curl_close($curl);
        
    //Decode request
        
    $resultDecoded json_decode($resulttrue);
        
    //Error decoding
        
    if(!$resultDecoded){
            echo 
    'Unknown error:<br /><br />';
            echo 
    $result;
        }
        
    //Error request
        
    else if($resultDecoded['ErrorCode'] != 0){
            echo 
    'Error (' $resultDecoded['ErrorCode'] . '):<br />' $resultDecoded['ErrorMessage'];
        }
        
    //No error
        
    else{
            echo 
    '<pre>';
                
    print_r($resultDecoded['Result']);
            echo 
    '</pre>';
        } 
    Erik

  2. #2
    Ten eerste is het handig om even te weten of het verplicht is om met POST te werken.
    Een GET is n.l. iets makkelijker.
    Probeer deze url:

    Code:
    http://abc.def.com/api/v1/products/list?Username=<<username>>&Password=<<password>>&CustomerID=<<customerID>>&Options=
    Als dit werkt dan kun je gewoon een idhttp1.get(url); doen.

    Anders moet je een post gaan doen (zoiets):

    Delphi Code:
    1. function DoPost: String;
    2. const
    3.   Url = 'http://abc.def.com/api/v1/products/list';
    4. var
    5.   IdHTTP1: TIdHTTP;
    6.   Params: TStringList;
    7. begin
    8.   Result := '';
    9.   IdHTTP1 := TIdHTTP.Create(nil);
    10.   Params := TStringList.Create;
    11.   try
    12.     Params.Clear;
    13.     Params.Add('Username=' + Username);
    14.     Params.Add('Password=' + Password);
    15.     Params.Add('CustomerID=' + CustomerID);
    16.     Params.Add('Options=');
    17.     Result := IdHTTP1.Post(Url, Params);
    18.     Showmessage(Result);
    19.   finally
    20.     IdHTTP1.Free;
    21.     Params.Free;  
    22.   end;
    23. end;

  3. #3
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    Rik,

    je hebt staan <<username>>
    stel de echter username is erik, zet ik dan <erik> in de regel of <<erik>> of erik ?
    Erik

  4. #4
    Quote Originally Posted by ErikB View Post
    Rik,

    je hebt staan <<username>>
    stel de echter username is erik, zet ik dan <erik> in de regel of <<erik>> of erik ?
    Gewoon erik.
    (ik zette de << >> eromheen om aan te geven dat je dit moest wijzigen.

    En als de URL een foutmelding geeft dan zul je dus de POST moeten doen.

  5. #5
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    Hallo Rik,

    ik krijg een foutmelding alsdat ik geen correcte username/password heb mee gegeven. Inmiddels heb ik een berichtje naar de systeembeheerder gestuurd hierover.

    (dank overigens voor je snelle reacties!)
    Erik

  6. #6
    Quote Originally Posted by ErikB View Post
    ik krijg een foutmelding alsdat ik geen correcte username/password heb mee gegeven. Inmiddels heb ik een berichtje naar de systeembeheerder gestuurd hierover.
    Ik neem aan dat je dit bij de POST krijgt. Want als je dit bij de GET krijgt dan kan ik me voorstellen dat het dan toch via een POST moet.

    Tsja.. en als je een foutmelding van POST krijgt is het wel handig om een correcte username en password te hebben.

  7. #7
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    Rik,

    het werkt met POST
    alleen .... ik moet geen type fouten maken. ik heb er zes keer overheen gekeken

    dank voor je hulp.
    Erik

  8. #8
    Even afdwalen, maar web en security zijn nog steeds een grote issue in veel omgevingen.

    Let op dat je een username / password nooit in een GET moet gebruiken. Die combinatie staat vervolgens in elke log omdat hij onderdeel uitmaakt van de URL, dat lijkt me niet echt de bedoeling. Echt veilig wordt het natuurlijk pas als je de POST naar een https doet.
    Marcel

  9. #9
    Dan moet die abc.def.com natuurlijk wel HTTPS ondersteunen.

    Je zou zelf even moeten beoordelen hoe erg het is dat deze gegevens "op straat liggen". Als het alleen is om een prijslijst op te roepen en je kunt met dezelfde gebruikersnaam/wachtwoord verder nergens iets doen dan zal het niet zoveel kwaad kunnen. Als je daarmee echter ook orders kunt plaatsen en allerlei andere dingen, dan zou je inderdaad even na moeten vragen of ze ook geen HTTPS hebben (en zo niet, waarom niet).

  10. #10
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    Heel nuttige woorden !
    Ik heb van de systeembeheerder begrepen dat HTTPS in de planning zit. Naast het ophalen van de prijslijst, is er ook een functie om een order te plaatsen, en dat moet uiteraard veilig gebeuren.
    Erik

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •