delphi Tidhttp 发送json格式报文
type
TwmsThreadpostJson = class(TThread)
private
Furl: string;
Fpostcmd: string;
FResult: string;
FBOOL: Boolean;
protected
procedure Execute; override;
end; class function TWmsApplicationfunction.postjson(url, postcmd: string): string;
var
FThread: TwmsThreadpostJson;
begin
if booleanshowflash then
cxSetSplashVisibility(Application.MainForm <> nil, '');
try
FThread := TwmsThreadpostJson.Create;
FThread.Furl := url;
FThread.Fpostcmd := postcmd;
FThread.FBOOL := False;
FThread.Resume; while true do
begin
Application.ProcessMessages;
if FThread.FBOOL then //等待子线程执行完毕
begin
cxSetSplashVisibility(False, '');
Result := FThread.FResult;
FThread.Free;
Break;
end;
end;
except end procedure TwmsThreadpostJson.Execute;
var
strStream: TStringStream;
strStream1: TStringStream;
IdHTTP: Tidhttp;
AJson: TQJson;
passuess: boolean;
strData: string;
Strtemp: string;
strRadom: string;
strDes: string;
pub, pri: TFGInt;
begin
Fresult := '';
IdHTTP := Tidhttp.create(nil);
try
IdHTTP.Request.CustomHeaders.clear;
IdHTTP.Request.RawHeaders.values['Cookie'] := yundawms.returncookek;
IdHTTP.HandleRedirects := true;
IdHTTP.Request.CustomHeaders.Add('Cookie: ' + yundawms.returncookek);
IdHTTP.Request.Connection := 'Keep-Alive';
IdHTTP.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)';
// IdHTTP.Request.ContentType:='application/x-www-form-urlencoded;charset=UTF-8';
IdHTTP.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*';
IdHTTP.Request.AcceptLanguage := 'zh-cn';
IdHTTP.Request.AcceptEncoding := 'gzip, deflate';
IdHTTP.Request.CacheControl := 'no-cache';
IdHTTP.ReadTimeout := ;
IdHTTP.ConnectTimeout := ;
IdHTTP.Request.ContentType := 'application/json;charset=UTF-8';
IdHTTP.Request.AcceptCharSet := 'UTF-8';
IdHTTP.Request.AcceptEncoding := 'UTF-8';
IdHTTP.Request.AcceptLanguage := 'UTF-8';
IdHTTP.Request.CharSet := 'UTF-8';
// IdHTTP1.CookieManager := IdCookieManager1;
IdHTTP.HTTPOptions := IdHTTP.HTTPOptions + [hoKeepOrigProtocol]; // 关键这行
IdHTTP.ProtocolVersion := pv1_;
AJson := TQJson.Create;
passuess := false;
try
AJson.Parse(Fpostcmd);
if Assigned(AJson.ItemByPath('username')) then
AJson.ItemByPath('username').value := Tyundawms.getwmsuser;
Strtemp := inttostr(ConvertDelphiDateTimeToJavaDateTime(now));
try
AJson.AddVariant('dateTime', Strtemp);
except end; strData := Tyundawms.getwmsuser + Tyundawms.getwmspassword + Strtemp;
AJson.AddVariant('validation', TWmsApplicationfunction.Getmd5(strData));
passuess := true;
Fpostcmd := AJson.AsString;
if passuess = true then
strStream := TStringStream.create(Fpostcmd, TEncoding.UTF8)
else
exit;
finally
AJson.Free;
end;
try
yundawms.AppService.GeneralUtility.retmain('log:post' + ' url:' + Furl + ' date:' + Fpostcmd);
except
// raise Exception.Create('postjson:记录日志异常!');
end; strStream1 := TStringStream.create('', TEncoding.UTF8);
try
IdHTTP.Post(Furl, strStream, strStream1);
Fresult := strStream1.DataString; Fresult := StringReplace(Fresult, '\u008F', '', [rfReplaceAll]); //含有的特殊字符 替换为空
Fresult := StringReplace(Fresult, '\u00A0', ' ', [rfReplaceAll]); //含有全角字符替换 全角字符会乱码
except
raise Exception.Create('postjson:服务器链接失败,请检查【网络】是否正常!');
Fresult := '';
end; try
yundawms.AppService.GeneralUtility.retmain('log:get' + ' url:' + Furl + ' resultdate:' + Fresult);
except
end;
finally
IdHTTP.Disconnect;
if Assigned(IdHTTP) then
freeandnil(IdHTTP);
if Assigned(strStream) then
freeandnil(strStream);
if Assigned(strStream1) then
freeandnil(strStream1);
FBOOL := True;
end;
end;
转:https://www.cnblogs.com/yangxuming/p/8086779.html
delphi Tidhttp 发送json格式报文的更多相关文章
- 利用 CURL 发送JSON格式字符串
/* * post 发送JSON 格式数据 * @param $url string URL * @param $data_string string 请求的具体内容 * @return array ...
- idHTTP 向网站发送json格式数据
idHTTP 向网站发送json格式数据 var rbody:tstringstream; begin rbody:=tstringstream.Create('{"name":& ...
- 如何使用python内置的request发送JSON格式的数据
使用步骤如下: 一.如果想发送json格式的数据,需要使用request模块中的Request类来创建对象,作为urlopen函数的参数 二.header中添加content-type为applica ...
- 巧妙的使用jmeter来发送json格式数据
1. header-manager 修改content-type值. 如果不修改该值, 则默认会是urlencode的数据格式(例如a=5&b=6). 修改为json后,会告诉服务器,发送的数 ...
- ajax发送json格式与文件数据、django自带的序列化器(了解)
上期内容回顾 聚合查询和分组查询 # 聚合查询 max min sum avg count # 查询关键字:aggregate from django.db.models import Max, Mi ...
- linux c 使用socket 发送http请求 可以发送json格式数据
#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <time.h ...
- 通过http协议发送json格式请求并解析
本人初入门径.代码略显粗糙,欢迎指点改正! 最近在做公司的项目的时候,需要和其他公司进行业务上的对接,对方直接扔过来一个协议用来开发,最近稍微看了一下,写了一个通过协议获取数据的方法 对方的协议内容部 ...
- 模拟一个http 请求的json格式报文,带 rsa 签名操作
一.对需要加密的字符串,定义RsaSignUnsign 类,代码如下: 实现了: 1.实现了生成新的pubkey.pri_key方法: 2.将新生成的keys 写入文件: 3.从文件获取pubkey. ...
- java请求POST发送json格式请求
public static String upload(String url){ try { HttpClient httpclient = new DefaultHttpClient(); Http ...
随机推荐
- postman+jmeter接口实例
接口基础 一.为什么要单独测试接口? 1. 程序是分开开发的,前端还没有开发,后端已经开发完了,可以提前进入测试2. 接口直接返回的数据------越底层发现bug,修复成本是越低的3. 接口测试能模 ...
- navicat破解版的下载与激活
原文链接:http://www.cnblogs.com/djwhome/p/9289295.html 以前一直使用的老版的破解版的navicat,但是最近老是报错 而且连接还特别慢,今天终于不忙了额, ...
- ubuntu配置vnc服务
今晚比较闲,就用ubuntu系统搭了vnc系统,真的好用(比centos简单多了). 简单介绍下,VNC(Virtual Network Computing)服务是一款优秀的屏幕分享及远程连接服务,基 ...
- kafka producer serializer序列化(六)
生产者需要将要发送的数据转换成字节数组才能通过网络发送给kafka,对于一些简单的数据,kafka自带了一些序列化工具, 如:StringSerializer Double Long Integer ...
- [游戏复刻] 2048(2014. Android)
等哪一天我有很多很多的时间再写吧...
- python如何切割字符串
python字符串的分割方法如下 str.split():字符串分割函数 通过指定分隔符对字符串进行切片,并返回分割后的字符串列表. 语法: str.split(s, num)[n] 参数说明: s: ...
- python中sort和sorted用法的区别
Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列 一,最简单的排序 1.使用sort排序 my_list = [3 ...
- nginx做为web容器部署静态资源以及做负载均衡反向代理实现
需求: 此时前台开发完成打包生成静态资源文件,要做到以下方面: 使用nginx部署静态资源,同时nginx要实现端口转发,隐藏真实后台地址,同时后台需要做一个负载均衡. localhost:7001 ...
- Spring在Thread中注入Bean无效的解决方式
在Spring项目中,有时需要新开线程完成一些复杂任务,而线程中可能需要注入一些服务.而通过Spring注入来管理和使用服务是较为合理的方式.但是若直接在Thread子类中通过注解方式注入Bean是无 ...
- win10下搭建vue开发环境
特别说明:下面任何命令都是在windows的命令行工具下进行输入,打开命令行工具的快捷方式如下图: 详细的安装步骤如下: 一.安装node.js 说明:安装node.js的windows版本后 ...