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

需要转发数据到客户的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.代码

varJsonstr:ansistring;

Url,ResData:string;

ResponseStream:TStringStream;

resStr:integer;

HTTPRespone:IHTTPResponse;//THTTPResponse;

ss : TMemoryStream;beginNetHTTPClient1.AllowCookies:=true;with NetHTTPClient1 do

begin

//AcceptCharSet := 'utf-8';

ConnectionTimeout := 2000; //2秒

ResponseTimeout := 10000; //10秒

AcceptEncoding := 'UTF-8';

AcceptEncoding := '65001';

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[1], Length(Jsonstr));

ss.Position := 0;

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;  否则对方收到的长度只有一半。

httpf发送 json_https和http的post发送总结相关推荐

  1. java串口发送16进制_串口发送数据——字符串发送与十六进制发送的区别

    在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示.我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照 ...

  2. Android--判断发送短信后的状态/发送成功Or发送失败

    相信用过诺基亚手机的朋友可能会记得,在短信发送之后,手机会显示发送手机的状态,Android同样也提供了相应的功能,而且实现这个功能的方法也很简单. 首先,我们需要在程序中注册两个权限: 1.接收短信 ...

  3. Android短信发送流程之普通短信发送(原)

    我们先来看最简单的流程入手分析,即收件人只有一个,而且不是长短信的情况. 一.地址有效性检测 当点击发送按钮时,触发onClick事件: [java] view plaincopy @ComposeM ...

  4. $.ajax 发送请求,JavaScript之Ajax-2 Ajax(使用Ajax发送get请求、使用Ajax发送post请求)

    一.使用Ajax发送get请求 发送异步请求的步骤 - 获取Ajax对象:获取 XMLHttpRequest对象实例 - 创建请求:调用XMLHTTPRequest对象的open方法 - 设置回调函数 ...

  5. python发邮件给女朋友代码_python实现邮件发送完整代码(带附件发送方式)

    实例一:利用SMTP与EMAIL实现邮件发送,带附件(完整代码) __author__ = 'Administrator' #coding=gb2312 from email.Header impor ...

  6. ajax发送请求和数据返回,Ajax发送和接收请求

    首先Ajax的不刷新页面提交数据 基本上浏览器能接收的信息,Ajax都可以接收,ex:字符串,html标签,css标签,xml格式内容,json格式内容等等..... // IE浏览器 if(Acti ...

  7. linux tcp socket 接收的字节数与发送的字节数不符,TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系...

    1. TCP发送接口:send() TCP发送数据的接口有send,write,sendmsg.在系统内核中这些函数有一个统一的入口,即sock_sendmsg().由于TCP是可靠传输,所以对TCP ...

  8. java实现邮件发送, 抄送及多附件发送

    java实现邮件发送, 抄送及多附件发送 所需的jar包  mailapi.jar和smtp.jar  或  javax-mail-xxx.jar(如javax.mail-1.5.6.jar)  ht ...

  9. python requests session post_requests.session()发送请求 和使用requests直接发送请求的区别...

    requests.session()发送请求 和使用requests直接发送请求的区别 一.Session 在requests里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客 ...

  10. android 分包粘包_Android Socket 发送与接收数据问题处理: 发送后的数据接收到总是粘包...

    先说明一下粘包的概念: 发送时是两个单独的包.两次发送,但接收时两个包连在一起被一次接收到. 在以前 WinCE 下 Socket 编程,确实也要处理粘包的问题,没想到在 Android 下也遇到了. ...

最新文章

  1. 求助啊,被STM32的CAN折磨的疯了
  2. python打印星星居中_python中怎么打印星星
  3. php ajax实现查询功能,ajax实现分页查询功能
  4. Spring框架相关问题
  5. Qt多线程间信号槽传递非QObject类型对象的参数
  6. 电商订单ElasticSearch同步解决方案--使用logstash
  7. 11年亚锦赛球员数据_2020年11月楼市数据更新!全美房屋中间价持续上涨
  8. VsCode开发Java SpringBoot遇到的问题
  9. [HDU1003]最长子序列和
  10. openai-gpt_GPT-3对非技术专业人员意味着什么
  11. 7、IPsec 实验
  12. arcgis图层合并裁剪
  13. java中实体类的作用_Java中什么是实体类和实体类的作用
  14. 计算机桌面锁屏设置,如何设置电脑锁屏壁纸详细方法
  15. IcedTea:首个100%兼容、开源的Java
  16. 0.1uf 电容浅析
  17. mdf数据库文件打开
  18. 史莱姆区块查找 超简单java代码
  19. 《安富莱嵌入式周报》第290期:开源静电便携测试仪,开源音频功放,CAN高波特率设计,超级铁电产品,小米Vela系统,65W USB PD充电器参考设计
  20. AT2565 Chocolate Bar 洛谷

热门文章

  1. android usb摄像头 前后置,android – 在后置和前置摄像头之间切换
  2. java开发基础知识学习总结
  3. windows10下whisper的安装使用和CUDA的配置
  4. Linux ntp时间服务器的搭建和配置
  5. Linux unison 效率,linux利用unison实现双向或多向实时同步
  6. Win11新建不了文本文档?Win11右键无法新建文本文档的解决方法
  7. 还在为日程安排发愁?是因为你没有使用飞项
  8. 双系统linux分区扩容,Win7 下Ubuntu14.04 双系统无损扩容
  9. 亲密关系科学(03)夫妻相处的智慧
  10. 移动端事件touchstart、touchmove、touchend详解