本文为转贴内容,感谢作者阿进!

需要转发数据到客户的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发送总结的更多相关文章

  1. ASP.NET通过http/https的POST方式,发送和接受XML文件内容

    本文转载:http://hi.baidu.com/ysyhyt/item/5011ae39ce3cf49fb80c0395 本文参考:http://blog.csdn.net/ououou123456 ...

  2. 【转载】JMeter学习(三十六)发送HTTPS请求

    Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试.由于在云阅读接口测试的过程中需要进行登录操作,而登录请求是HTTPS协议.这就需要对jmeter进行设置. ...

  3. JMeter学习(三十六)发送HTTPS请求(转载)

    转载自 http://www.cnblogs.com/yangxia-test Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试.由于在云阅读接口测试的过程 ...

  4. Vert.x(vertx)发送 HTTP/HTTPS请求

    Vert.x Web服务有两种协议,一种是HTTP,另外一种是使用ssl的HTTPS,请求的方式有五种,分别是get.post.put.delete.head.为了简单,服务端主要实现对HTTP协议的 ...

  5. http协议(十一)http与https

    一.http的缺点 之前有介绍过http协议相关的一些知识,http是相当优秀和方便的,但它也有缺点,主要不足表现在如下几个方面: △ 通信使用明文(不加密),内容可能会被窃听 △ 不验证通信方的身份 ...

  6. HTTPS和HTTP的区别

    (转自:http://www.php100.com/html/it/biancheng/2015/0209/8582.html) 总的来说,http效率更高,https安全性更高. 首先谈谈什么是HT ...

  7. 听大神说:https和http有何区别?(转)

    在做雅虎的时候,发现用第三方工具截取不到客户端与服务端的通讯,以前重来没碰到过这种情况,仔细看了看,它的url请求时基于https的,gg了下发现原来https协议和http有着很大的区别.总的来说, ...

  8. 理解 HTTPS 的工作原理

    目标读者:理解HTTP协议,对称和非对称加密,想要了解HTTPS协议的工作原理. 读完本文,你能明白 什么是HTTPS,TLS(SSL),TLS和HTTPS是什么关系? 什么是证书和数字签名,它们是如 ...

  9. requests模块--python发送http请求

    requests模块 在Python内置模块(urllib.urllib2.httplib)的基础上进行了高度的封装,从而使得Pythoner更好的进行http请求,使用Requests可以轻而易举的 ...

随机推荐

  1. Array.ConvertAll<TInput, TOutput> 数组相互转化方法

    有个需求,把char数组转换为int数组,然后噼里啪啦就弄了这样一堆代码: public static int[] CharArrToIntArr(char[] charArr) { int[] in ...

  2. 语音文件 pcm 静默(静音)判断

    转载:http://www.voidcn.com/relative/p-fwdkigvh-bro.html pcm 文件存储的是 原始的声音波型二进制流,没有文件头. (1)首先要确认 pcm文件的每 ...

  3. 全部二进制脚本高可用--只有docker启动未成功

    [root@test1 script]# cat k8s-docker-binary-py #!/usr/bin/python # -*- coding: utf-8 -*- from __futur ...

  4. ASP.NET Core 入门笔记3,使用ASP.NET Core MVC框架构建Web应用

    一.ASP.NET Core MVC 输出Hello World,Friend! 1.引入 ASP.NET Core MVC 修改应用启动类(Startup.cs),引入MVC模块并配置默认路由 pu ...

  5. 【FFMPEG】ffmpeg 时间戳问题汇总

    ffmpeg 时间戳问题汇总 http://www.cnblogs.com/loveclover/archive/2011/03/23/1993065.html 问题是这样的 用一个 VLC(流媒体客 ...

  6. vue点击编辑按钮,内容变成input可以修改,也可以删除

    一.效果 图1 图2,点击报错之后,又变成图1的效果 二.使用到了element UI中的以下组件: <el-button> <el-input> 三.使用的关键点是vue中的 ...

  7. Kafka性能调优分析-线上环境篇

    一.背景介绍: 在平时的开发中,使用kafka来发送数据已经非常熟悉,但是在使用的过程中,其实并没有比较深入的探索kafka使用过程中 一些参数配置,带来的损失可能就是没有充分的发挥出kfka的优势, ...

  8. Windows主机SAM文件格式破解解密

    文件格式如是下图这种格式: 那么就可以通过通过kali终端samdump2 + system + sam 生成出来通过hashcat -m 1000去跑,或者通过md5查询

  9. Centos7 下安装docker

    Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上. Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位.系统内核 ...

  10. Elasticsearch5.x 引擎健康情况

    查看引擎健康情况 [root@w]# curl -XGET "http://localhost:9200/_cat/health?v" epoch timestamp cluste ...