https和http的post发送总结
本文为转贴内容,感谢作者阿进!
需要转发数据到客户的https的服务器上出现一系列问题总结如下:
1.因为是https首先考虑到用最新的控件NetHTTPClient(只有在XE8以上才有)。
2.客户的服务器需要先登录
例如:域名/authentication?account=admin&password=001
Method: POST
return:
200:成功
404:不存在
606:自定义错误
3.登录成功后需要向下面地址提交json数据
URL:域名/measVals/batch
Method:POST
4.代码
var
Jsonstr:ansistring;
Url,ResData:string;
ResponseStream:TStringStream;
resStr:integer;
HTTPRespone:IHTTPResponse;//THTTPResponse;
ss : TMemoryStream;
begin
NetHTTPClient1.AllowCookies:=true;
with NetHTTPClient1 do
begin
//AcceptCharSet := 'utf-8';
ConnectionTimeout := ; // 2秒
ResponseTimeout := ; // 10秒
AcceptEncoding := 'UTF-8';
AcceptEncoding := '';
AcceptLanguage := 'zh-CN';
ContentType := 'application/json; charset=utf-8';//'multipart/form-data';//'application/json';
// UserAgent := 'Embarcadero URI Client/1.0';
//UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';//'Embarcadero URI Client/1.0';
end;
ResponseStream := TStringStream.Create;
ss := TMemoryStream.Create();
//登录
Url:='https://域名.com/platform/authentication?account=admin&password=001';
HTTPRespone:=NetHTTPClient1.Post(Url,ss,ResponseStream);
memo1.Lines.Add(ResponseStream.DataString);
//提交数据
Url:='https://域名.com/platform/measVals/batch';
Jsonstr:='{"tourId":"0","st":"MOBILE","mu":[{"num":"12345678","man":"test",'+
'"med":"07", "ver":"0","measCur":[ { "time":"1555050716", "volume": { "unit":"m",'+
'"value":"13" } }] }] }';
ss.Write(Jsonstr[], Length(Jsonstr));
ss.Position := ;
resStr:=NetHTTPClient1.Post(Url,ss,ResponseStream).StatusCode;
memo1.Lines.Add(ResponseStream.DataString);
end;
5.需要注意的问题
(1)因为本例中登录后需要记录session,开始测试用的dXE10.1,始终记录不了session,后来查了网络知道是该版本的bug,后来换用最新的XE10.3才可以NetHTTPClient1.AllowCookies:=true;
(2)提交json数据开始用TStringStream向对方提交数据,对方始终收到的是空,后来改用TMemoryStream才可以收到,并且json数据要用Jsonstr:ansistring; 否则对方收到的长度只有一半。
https和http的post发送总结的更多相关文章
- ASP.NET通过http/https的POST方式,发送和接受XML文件内容
本文转载:http://hi.baidu.com/ysyhyt/item/5011ae39ce3cf49fb80c0395 本文参考:http://blog.csdn.net/ououou123456 ...
- 【转载】JMeter学习(三十六)发送HTTPS请求
Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试.由于在云阅读接口测试的过程中需要进行登录操作,而登录请求是HTTPS协议.这就需要对jmeter进行设置. ...
- JMeter学习(三十六)发送HTTPS请求(转载)
转载自 http://www.cnblogs.com/yangxia-test Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试.由于在云阅读接口测试的过程 ...
- Vert.x(vertx)发送 HTTP/HTTPS请求
Vert.x Web服务有两种协议,一种是HTTP,另外一种是使用ssl的HTTPS,请求的方式有五种,分别是get.post.put.delete.head.为了简单,服务端主要实现对HTTP协议的 ...
- http协议(十一)http与https
一.http的缺点 之前有介绍过http协议相关的一些知识,http是相当优秀和方便的,但它也有缺点,主要不足表现在如下几个方面: △ 通信使用明文(不加密),内容可能会被窃听 △ 不验证通信方的身份 ...
- HTTPS和HTTP的区别
(转自:http://www.php100.com/html/it/biancheng/2015/0209/8582.html) 总的来说,http效率更高,https安全性更高. 首先谈谈什么是HT ...
- 听大神说:https和http有何区别?(转)
在做雅虎的时候,发现用第三方工具截取不到客户端与服务端的通讯,以前重来没碰到过这种情况,仔细看了看,它的url请求时基于https的,gg了下发现原来https协议和http有着很大的区别.总的来说, ...
- 理解 HTTPS 的工作原理
目标读者:理解HTTP协议,对称和非对称加密,想要了解HTTPS协议的工作原理. 读完本文,你能明白 什么是HTTPS,TLS(SSL),TLS和HTTPS是什么关系? 什么是证书和数字签名,它们是如 ...
- requests模块--python发送http请求
requests模块 在Python内置模块(urllib.urllib2.httplib)的基础上进行了高度的封装,从而使得Pythoner更好的进行http请求,使用Requests可以轻而易举的 ...
随机推荐
- 基于Python使用scrapy-redis框架实现分布式爬虫
1.首先介绍一下:scrapy-redis框架 scrapy-redis:一个三方的基于redis的分布式爬虫框架,配合scrapy使用,让爬虫具有了分布式爬取的功能.github地址: https: ...
- 深度学习之加载VGG19模型分类识别
主要参考博客: https://blog.csdn.net/u011046017/article/details/80672597#%E8%AE%AD%E7%BB%83%E4%BB%A3%E7%A0% ...
- Google Protocol Buffer 用法 C#
在网上查了一下,虽然有很多文章介绍Protocol Buffer,但是实际使用起来,还是会遇到很多问题,所以我想应该有一个指南一样的东西,让新手很快就能使用它. Protocol Buffer简写为P ...
- 一百零九:CMS系统之前端根据不同权限渲染不同菜单
给用户绑定为开发者 个人信息中渲染角色和权限 {% extends 'cms/cms_base.html' %} {% block title %} 个人信息{% endblock %} {% blo ...
- 数据库文件结构、sqlserver ON [PRIMARY]
在sqlserver创建表的语句中,最后总来一句on[primary],这到底是什么意思? .联机丛书中CREATE TABLE的语法下似乎没有找到.最后终于发现,具体如下: 在CREATE TABL ...
- 20190521 - macOS 中显示隐藏文件的快捷键
macOS 中显示隐藏文件,以前总是借助于命令行或第三方软件,其实有一个快捷键: shift + cmmand + .
- 安装heat
在控制节点上执行 controller-heat(){mysql -uroot -p${MYSQL_PASSWD} << EOF DROP DATABASE IF EXISTS heat; ...
- spring_mvc入门项目的小总结
1.先搭建一个maven的web项目 ,然后把文件夹完善一下,创建一个java的文件夹和resource的问件夹,并指定他们各自的功能. 导入pom.xml文件的依赖 <properties&g ...
- Linux 网络 I/O 模型简介(图文)(转载)
Linux 网络 I/O 模型简介(图文)(转载) 转载:http://blog.csdn.net/anxpp/article/details/51503329 1.介绍 Linux 的内核将所有外部 ...
- linux各种IPC机制
docker中的资源隔离,一种就是IPC的隔离.IPC是进程间通信. 下面的文章转载自https://blog.csdn.net/yyq_9623/article/details/78794775 原 ...