TWinHttp之二

function EncodeParams(strings: TStrings): SockString;
var
i: Integer;
S: string;
begin
for i := 0 to strings.Count - 1 do
begin
S := strings.Names[i];
if Length(strings.Values[S]) > 0 then
begin
strings.Values[S] := UrlEncode(strings.Values[S]);
end;
if Result = '' then
Result := strings[i]
else
Result := Result + '&' + strings[i];
end;
end;

function httppost(const url, password: SockString; params: TStrings; var ResponseData: SockString): Integer;
var
aURI: TURI;
http: TWinHTTP;
head: SockString;
begin
http := nil;
try
aURI.From(url);
http := TWinHTTP.Create(aURI.Server, aURI.Port, aURI.Https);
http.AuthUserName := 'cxg';
http.AuthPassword := '929';
http.IgnoreSSLCertificateErrors := true;
Result := http.Request(aURI.Address, 'POST', 0, '', EncodeParams(params), password, head, ResponseData);
finally
aURI.Clear;
http.Free;
end;
end;

function httpget(const fullurl, password: SockString; var ResponseData: SockString): Integer;
var
aURI: TURI;
http: TWinHTTP;
head: SockString;
begin
http := nil;
try
aURI.From(fullurl);
http := TWinHTTP.Create(aURI.Server, aURI.Port, aURI.Https);
http.IgnoreSSLCertificateErrors := true;
Result := http.Request(aURI.Address, 'GET', 0, '', '', password, head, ResponseData);
finally
aURI.Clear;
http.Free;
end;
end;

procedure getQry(const url, sql: string; var data: SockString);
var
aurl: string;
begin
aurl := url + 'query?sql=' + UrlEncode(sql);
if httpget(aurl, 'yn', data) = 404 then
begin
ShowMessage('登陆中间件验证失败');
Abort;
end;
end;

procedure postQry(const url, sql: string; var data: SockString);
var
aurl: string;
params: TStrings;
begin
params := TStringList.Create;
try
params.Add('sql=' + sql);
aurl := url + 'query';
if httppost(aurl, 'yn', params, data) = 333 then
begin
ShowMessage('登陆中间件验证失败');
Abort;
end;
finally
params.Free;
end;
end;

procedure postExecute(const url, sql: string; var data: SockString);
var
aurl: string;
params: TStrings;
begin
params := TStringList.Create;
try
params.Add('sql=' + sql);
aurl := url + 'execute';
if httppost(aurl, 'yn', params, data) = 333 then
begin
ShowMessage('登陆中间件验证失败');
Abort;
end;
finally
params.Free;
end;
end;

TWinHttp之二的更多相关文章

  1. 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态

    最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考. 换工作心里挺忐忑, 对未来也充满了憧憬与担忧.(虽然已是老人, 换了N次工作了,但每次心里都和忐忑). 写写代 ...

  2. 前端开发中SEO的十二条总结

    一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...

  3. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  4. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  5. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  6. MIP改造常见问题二十问

    在MIP推出后,我们收到了很多站长的疑问和顾虑.我们将所有疑问和顾虑归纳为以下二十个问题,希望对大家理解 MIP 有帮助. 1.MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何? 答:在原页 ...

  7. 如何一步一步用DDD设计一个电商网站(二)—— 项目架构

    阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...

  8. ASP.NET Core 之 Identity 入门(二)

    前言 在 上篇文章 中讲了关于 Identity 需要了解的单词以及相对应的几个知识点,并且知道了Identity处在整个登入流程中的位置,本篇主要是在 .NET 整个认证系统中比较重要的一个环节,就 ...

  9. MVVM模式和在WPF中的实现(二)数据绑定

    MVVM模式解析和在WPF中的实现(二) 数据绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

随机推荐

  1. 【uva10779】收集者的难题

    按照题意建模就行了. #include<bits/stdc++.h> #define naive 0 #define inf 1000000007 using namespace std; ...

  2. [ python ] 项目一:FTP程序

    声明: 该项目参考学习地址: http://www.cnblogs.com/lianzhilei/p/5869205.html , 感谢博主分享,如有侵权,立即删除. 作业:开发一个支持多用户在线的F ...

  3. JQuery一个对象绑定多个事件

    jQuery("#id").click(func1).mouseover(func2)//方法连写,func为方法的名字 jQuery("#id").click ...

  4. AC日记——[SCOI2009]游戏 bzoj 1025

    [SCOI2009]游戏 思路: 和为n的几个数最小公倍数有多少种. dp即可: 代码: #include <bits/stdc++.h> using namespace std; #de ...

  5. CentOS6.5修改/etc/pam.d/sshd后root无法ssh登陆

    现象:由于公司需要服务器的登陆操作进行安全加固,同事为了省事,直接把CentOS7上的/etc/pam.d/sshd替换掉CentOS6.5上的/etc/pam.d/sshd,导致root用户ssh登 ...

  6. SpringBoot学习:在Interillj Idea上快速搭建SpringBoot项目

    一.创建SpringBoot项目 二.导入Jar包(pom.xml) <?xml version="1.0" encoding="UTF-8"?> ...

  7. POJ 3171.Cleaning Shifts-区间覆盖最小花费-dp+线段树优化(单点更新、区间查询最值)

    Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4721   Accepted: 1593 D ...

  8. JavaScript中思考do...while 和 while语句的区别

    Do...while和while...do的区别在于对于临界值的测试上.当在执行的时候只选择临界值来测试时,你会发现do...while至少要执行一次,而while...do则一次都不会执行.但是,当 ...

  9. DelegatingFilterProxy干了什么?

    org.springframework.web.filter.DelegatingFilterProxy 一般情况,创建一个Filter是交给自己来实现的.基于servlet规范,在web.xml中配 ...

  10. 关于lower_bound的优先级重载

    今天才知道$lower\_bound$最后有一个优先级参数…… 首先$lower\_bound$中的优先级和序列优先级必须相同才有效 $lower\_bound$中优先级默认的是小于号,也就是说仅当序 ...