I thought I'd just clarify we're actually using v7.23

The result returned is:
StatusCode= 401
{"responseCode":401,"responseMessage":"Unauthorized"}

Any suggestions welcome.




On 18 February 2014 13:01, Wayne Phipps <waynephi...@gmail.com> wrote:

> We are trying to integrate to a HTTP JSON API using Delphi 7.
>
>
>
> Before we started, we tested the remote API using an online service
> http://www.hurl.it/ to better understand the requirements.
>
> Now we've come to implement the interface in Delphi, we've hit a hurdle.
>
>
>
> The process should be as follows:
>
> 1)      Use HTTP POST to pass username and password parameters to login
> URL
>
> 2)      A token string is returned if login was successful
>
> 3)      The token is then used as Basic Authentication using HTTP GET to
> retrieve JSON from different API URL
>
>
>
> We can complete this whole process using hurl.it but only steps 1 & 2 in
> Delphi using the OverByte ICS TSslHttpCli component (I believe v9).
>
> Step 3 in Delphi fails with a 401 Unauthorized error basically not getting
> our token as auth.
>
>
>
> We can even copy the token retrieved using Delphi in step 1 & 2 and paste
> it as basic auth on hurl.it where setp 3 runs without error.
>
>
>
> An code example is as follows:
>
>
>
> procedure TForm1.getOrders(tokenString: string);
>
> var
>
>     params : TStringStream;
>
>     response: TStringStream;
>
> begin
>
>
>
>     memo1.Lines.Append( tokenString );
>
>     //  create our paramater list
>
>     params := TStringStream.Create('');
>
>     //params.WriteString ( '&username=' + tokenString);
>
>     params.Position := 0; //  this also works params.Seek(0,
> soFromBeginning );
>
>
>
>     //  create our response stream
>
>     response  := TStringStream.Create('');
>
>
>
>     //  set our properties
>
>     SslHttpCli1.ServerAuth := httpAuthBasic;
>
>     SslHttpCli1.Username := tokenString;
>
>
>
>     SslHttpCli1.SendStream := params;
>
>     SslHttpCli1.RcvdStream := response;
>
>
>
>     SslHttpCli1.URL := 'https://secure.bla.com/api/v2.0/bla/blabla';
>
> try
>
>     SslHttpCli1.Get;
>
>
>
> except
>
>     ShowMessage ('GET Failed !');
>
>     ShowMessage ('StatusCode   = ' + IntToStr(SslHttpCli1.StatusCode));
>
>     ShowMessage ('ReasonPhrase = ' + SslHttpCli1.ReasonPhrase);
>
>     Exit;
>
> end;
>
>
>
>     //  display the response
>
>     memo1.Lines.Append( response.DataString );
>
>     SslHttpCli1.Close;
>
>     params.Free;
>
>     response.Free;
>
> end;
>
>
>
> If I look at the working request using Fiddler, it looks like this should
> be a simple process. The Request View in Fiddler shows the following RAW
> data:
>
>
>
> POST http://www.hurl.it/execute_request 
> HTTP/1.1<http://www.hurl.it/execute_requestHTTP/1.1>
>
> Host: www.hurl.it
>
> Connection: keep-alive
>
> Content-Length: 290
>
> Accept: */*
>
> Origin: http://www.hurl.it
>
> X-Requested-With: XMLHttpRequest
>
> User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,
> like Gecko) Chrome/32.0.1700.107 Safari/537.36
>
> Content-Type: application/x-www-form-urlencoded; charset=UTF-8
>
> DNT: 1
>
> Referer: http://www.hurl.it/
>
> Accept-Encoding: gzip,deflate,sdch
>
> Accept-Language: en-US,en;q=0.8,en-GB;q=0.6
>
> Cookie: _ga=GA1.2.798759816.1392716338
>
>
>
> follow_redirects=&method=GET&url=https%3A%2F%2Fsecure.bla.com
> %2Fapi%2Fv2.0%2Fbla%2Fblabla
> *&username=YmhcOMy4HTVF3WIP9guWYKrMobQKnapLNS5BnE8Y*
> &password=&digest_username=&digest_password=&consumer_key=&consumer_secret=&access_token=&token_secret=&signature_type=query&body=
>
>
>
> For some strange reason, we've not been able to pass the token back to the
> API.
>
>
>
> Apparently, the following would be the equivalent using curl:
>
>
>
> curl -X GET -I --user YmhcOMy4HTVF3WIP9guWYKrMobQKnapLNS5BnE8Y:
> https://secure.bla.com/api/v2.0/bla/blabla
>
>
>
> I've tried setting the ServerAuth type to basic and passing the token as a
> username parameter but without success.
>
>
>
> Any idea how to achieve this seemingly simple process? Basically, it's
> making no sense to me.
>
>
>
>
>
> Kind Regards,
>
>
>
>
>
>
> Wayne Phipps
>
>
>
>
>
>
>
>
>
>
>
-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to