BookmarkSubscribeRSS Feed
natson001
Calcite | Level 5

Try to fetch data from a secured website (ID and password) using the macro

%macro http(http=%nrstr(), save_file=, hostname=, delimiter=%str(|),fileref=browser, termstr=CRLF);

  %local str1 str2 pos http;

  %let str1=;

  %let str2=;

  %do %while (%index(&http,&delimiter)>0);

    %let pos=%index(&http,&delimiter);

    %let str1=&str1%qsubstr(&http, 1, &pos-1)/;

    %let str2=&str2%qsubstr(&http, 1, &pos-1)'0d0a'x;

    %let http=%qsubstr(&http, &pos+1, %length(&http)-&pos);

  %end;

  filename &fileref socket "&hostname:80" termstr=&termstr lrecl=8192;

  data _null_;

retain chunked;

length rec2 $10000 chunked $1;

infile &fileref length=len;

    if _n_=1 then do;

    file &fileref;

put %unquote(&str1);

file &save_file;

put '>>> HTTP Request:' '0d0a'x;

put %unquote(&str2);

put '0d0a'x '<<< HTTP Response:' '0d0a'x;

    end;

    file &save_file recfm=n;

input record $varying8192. len;

    put record $varying8192. len '0d0a'x;

    if record='Transfer-Encoding: chunked' then chunked='Y';

    if len=0 and chunked='Y' then do while (1); %*** look for & process chunks;

input chunksize $varying8. len / record $varying8192. len;

if len ne 0 then do;

l2=len+countc(record, '0a'x);

rec2=tranwrd(record, '0a'x, '0d0a'x);

put rec2 $varying10000. l2;

end;

else stop; *** found null record at end of file, end loop;

    end;

  run;

%mend;

in the SAS document:

http://www2.sas.com/proceedings/sugi30/100-30.pdf

but got the error:

>>> HTTP Request:

POST /accounts/login/?next=/admin/epr/toothtreatmentordering/1980/history/ HTTP/1.1

Host: eprctr.dartmouth.edu

Connection: close

Cookie: sessionid=2d4cfc55f32e950d30c6aa5008693b99;

Content-Length: 47

j_username=myname&j_password&Logon=Log+On

<<< HTTP Response:

HTTP/1.1 400 Bad Request

Date: Wed, 01 Oct 2014 13:46:03 GMT

Server: Apache/2.2.14 (Ubuntu)

Vary: Accept-Encoding

Content-Length: 413

Connection: close

Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>400 Bad Request</title>

</head><body>

<h1>Bad Request</h1>

<p>Your browser sent a request that this server could not understand.<br />

Request header field is missing ':' separator.<br />

<pre>

j_username=myname&amp;j_password&amp;Logon=Log+On</pre>

</p>

<hr>

<address>Apache/2.2.14 (Ubuntu) Server at localhost Port 80</address>

</body></html>

Your suggestions will be appreciated!

Andrew

2 REPLIES 2
Ksharp
Super User

Not sure . Did you try proc http ?

natson001
Calcite | Level 5

Yes, I did.  I have username and password. But it returns with empty out put.

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1072 views
  • 0 likes
  • 2 in conversation