Never too old to learn.

http协议自学(终极之战)

Posted on By Andy Zhu

既然我们有了zul_http,为什么我们不用它来做ajax的测试呢?

{$mode objfpc}
uses zul_http;
 function display(req:http_message_C):http_message_S;
 var
  i:longint;
 begin
  writeln('Method:',req.method);
  writeln('Url:',req.url);
  writeln('Agreement:',req.agreement);
  writeln('Opt:');
  for i:=0 to length(req.opt)-1 do
   writeln(' key=',req.opt[i].key,'value=',req.opt[i].value);
  writeln('data=',req.data);
  writeln('ok');
  display.agreement:='HTTP/1.1';
  display.status_number:=200;
  display.status:='OK';
  setlength(display.opt,1);
  display.opt[0].key:='Content-Type';
  display.opt[0].value:='';
  display.data:='';
  if req.url='/' then
   begin
    display.opt[0].value:='text/html';
    display.data:=
    '<html>'+#13#10+
        '<head>'+#13#10+
            '<meta charset="utf-8">'+#13#10+
            '<script>'+#13#10+
                'function loadXMLDoc(){'+#13#10+
                    'var xmlhttp;'+#13#10+
                    'if(window.XMLHttpRequest){'+#13#10+
                        'xmlhttp=new XMLHttpRequest();'+#13#10+
                    '}else{'+#13#10+
                        'xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");'+#13#10+
                    '}'+#13#10+
                    'xmlhttp.onreadystatechange=function(){'+#13#10+
                        'if (xmlhttp.readyState==4 && xmlhttp.status==200){'+#13#10+
                            'document.getElementById("myDiv").innerHTML=xmlhttp.responseText;'+#13#10+
                        '}'+#13#10+
                    '}'+#13#10+
                    'xmlhttp.open("GET","/try/ajax/ajax_info.txt",true);'+#13#10+
                    'xmlhttp.send();'+#13#10+
                '}'+#13#10+
            '</script>'+#13#10+
        '</head>'+#13#10+
        '<body>'+#13#10+
            '<div id="myDiv"><h2>使用 AJAX 修改该文本内容</h2></div>'+#13#10+
            '<button type="button" onclick="loadXMLDoc()">修改内容</button>'+#13#10+
        '</body>'+#13#10+
    '</html>'+#13#10;
   end;
  if req.url='/try/ajax/ajax_info.txt' then
   begin
    display.opt[0].value:='text/plain';
    display.data:='What the fuck?';
   end;
 end;
begin
 resp:=@display;
 port:=8000;
 readln;
 start;
end.

既然是终极之战,那这段代码你们就自己体悟吧!

到此,http协议告一段落