PHP接口对方(C#)接收不到数据?ContentLength=-1

工作时遇到的问题。浏览器可以查看到json数据,但是对方死活收不到数据。

最后发现发现ContentLength=-1。

找到问题:为什么.NET程序下载获得的ContentLength=-1?

摘抄如下:用http分析工具会发现,原因原来是很简单的,这是因为某些网站服务器在发送响应内容时,会用gzip或 deflate等压缩算法压缩网页的内容,这样能使网页内容的数据包体积大大减小,从而加快了网络传输,这样客户端的浏览器显示网页也加快了。就是因为这 个gzip或 deflate功能,使得网页数据在进行http传输时不会在header里加上ContentLength属性,所以程序取回 来的ContentLength 的数值就默认为-1了(而 没有gzip或 deflate功能的网页肯定会ContentLength具体数值)。

解决方法:header(‘Content-Length: ‘ . strlen($json));

只要在输出json数据前发送报头就行啦~

当然也可以关闭服务器gzip功能 ,不推荐。

时间: 2024-10-17 10:29:49

PHP接口对方(C#)接收不到数据?ContentLength=-1的相关文章

ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理

话不多说,直接进入主题. 需求:基于Http请求接收Json格式数据,返回Json格式的数据. 整理:对接收的数据与返回数据进行统一的封装整理,方便处理接收与返回数据,并对数据进行验证,通过C#的特性对token进行验证,并通过时间戳的方式统一处理接收与返回的时间格式. 请求Json格式: { "Cmd": "login", "Token": "", "PageNo": 0, "OnePageNu

利用sendmsg和recvmsg来指定发送接口或者获取接收数据接口

前言 sendmsg和recvmsg函数是一对相对下层的套接字发送.接受函数.通过这对函数,我们可以设置或者取得数据包的一些额外的控制信息,这些信息中比较常用的就是本文要介绍的发送.接受接口信息.通过这对函数,我们可以指定一个数据包发送的时候使用的接口(网卡)或者获得一个接受到数据包的来源接口. sendmsg函数使用 sendmsg(fd, &mhdr, 0)函数中最重要的就是msghdr结构体.其定义如下: struct msghdr { void *msg_name; #发送地址 sock

串口通信基础,接收,发送数据

通信接口背景知识 设备之间通信的方式 一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种.它们的区别是: 串行通信的分类 1.按照数据传送方向,分为: 单工:数据传输只支持数据在一个方向上传输:    半双工:允许数据在两个方向上传输.但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信:它不需要独立的接收端和发送端,两者可以合并一起使用一个端口.    全双工:允许数据同时在两个方向上传输.因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端.

【转载】串口中怎样接收一个完整数据包的解析

这里以串口作为传输媒介,介绍下怎样来发送接收一个完整的数据包.过程涉及到封包与解包.设计一个良好的包传输机制很有利于数据传输的稳定性以及正确性.串口只是一种传输媒介,这种包机制同时也可以用于SPI,I2C的总线下的数据传输.在单片机通信系统(多机通信以及PC与单片机通信)中,是很常见的问题. 一.根据帧头帧尾或者帧长检测一个数据帧 1.帧头+数据+校验+帧尾 这是一个典型的方案,但是对帧头与帧尾在设计的时候都要注意,也就是说帧头.帧尾不能在所传输的数据域中出现,一旦出现可能就被误判.如果用中断来

可视化接口管理工具RAP,模拟数据,校验接口

最近看到一个不错的接口管理的工具,分享一下 RAP ppt介绍:http://www.imooc.com/video/11060 RAP是一个可视化接口管理工具 通过分析接口结构,动态生成模拟数据,校验真实接口正确性, 围绕接口定义,通过一系列自动化工具提升我们的协作效率. 使用网址:http://rap.taobao.org/ GitHub地址:https://github.com/thx/RAP 一些文档:https://github.com/thx/RAP/wiki/home_cn 官网:

TOMCAT服务器每次只能接收9999条数据

在将原来32位TOMCAT版本更换到64位版本下出现服务器每次只能接收9999条数据. 经过追踪服务器日志获取如下信息: org.apache.tomcat.util.http.Parameters processParameters INFO: More than the maximum number of request parameters (GET plus POST) for a single request ([10,000]) were detected. Any paramete

TCP带外数据学习总结(概念,发送接收过程,数据到达检测,代码实现)

最近在学习<Linux高性能服务器编程> 这本书,书中零零散散的讲了TCP带外数据的一些知识,在这里把这些知识总结以下,方便自己,也方便他人. 本文主要分为以下四个方面总结,分别为 TCP带外数据的概念,如何发送和接收带外数据,怎么检测带外数据的到达,最后介绍相关函数以及代码实现. 第一部分: TCP带外数据的概念 有很多传输层此协议都具有带外数据(OUT Of Band) 的概念,其作用是迅速通告通信的另一方本段发生的重要事件.带外数据具有比普通数据更高的优先级,理论上应该被立即发送和立即接

基础问题:在一个 Activity 中定义的串口接收程序,如果 Activity 切换到其它 Activity 后还能接收到串口数据吗?

============问题描述============ RT:基础问题:在一个 Activity 中定义的串口接收程序,如果 Activity 切换到其它 Activity 后还能接收到串口数据吗? 我的程序有两个 Activity,在启动后的 Activity 中已经验证了接收与发送数据. 后继做了第二个 Activity,此时从第二个 Activity 返回 第一个 Activity 时串口的接收线程会出错.调试了一下,串口再次被初始化了. 问题: (1)不想串口被反复初始化,应该如何做?

F4107单进程处理多个usart中断接收到的数据

解决:Cortex-M4上,usart自动发送数据方案. 1. usart中断太快.数据还没有处理完.usart中断就会把没处理完的数据上该覆盖掉.导致数据丢失. 2.这程序需要在main中处理4个usart口的数据,这样出错的概率会更大. 提出如下解决方案: 第一:规定每条完成的数据长度,步会超过256字节. 第二:我们规定数据的结束表标志为数据的后三位为,FFFFFF 第三:定义一个全局的数据,他是一个三维数组该数据用来存放4个usart口发上来的数据. uint8_t usart_data