PHP中使用CURL之备忘(一)

1、curl只能抓取页面的部分内容的原因分析:

错误提示:CURL transport error: transfer closed with outstanding read data remaining

libcurl 发送大于1024字节数据时启用“Expect:100-continue‘特性:

在使用 curl 做 POST 的时候,当要 POST 的数据大于 1024 字节的时候,curl 并不会直接就发起 POST 请求,而是会分为两步: 1. 发送一个请求,包含一个 "Expect: 100-continue" 头域,询问 Server 是否愿意接收数据; 2. 接收到 Server 返回的 100-continue 应答以后,才把数据 POST 给 Server; 这是 libcurl 的行为。

第一,libcurl 在发送大于 1024 字节的 POST 请求时采用了这种方法,但是相对的,它会引起请求延迟的加大。

第二,并不是所有的 web server 都能正确处理并应答“100-continue”,比如 lighttpd,就会返回417”Expectation Failed “,造成请求逻辑出错。(郑昀注1:lighttpd 1.4 版本有此严重问题,于1.5版本修复。 郑昀注2:Resin 于 3.0.5 版本增加了对 Expect: 100-continue 的支持。)

解决:修改CURLOPT 项:

CURLOPT_HTTPHEADER => array("Content-Type: application/binary") 改为 CURLOPT_HTTPHEADER => array("Content-Type: application/binary","Expect:")

时间: 2024-10-09 11:16:47

PHP中使用CURL之备忘(一)的相关文章

shell中${##%%}代表啥,备忘

#!/bin/bash A=aigo.goto.aigo.goto echo ${A#*go} echo ${A##*go} echo ${A%.*} echo ${A%%go*} 执行结果 .goto.aigo.goto to aigo.goto.aigo ai 备忘如下: #*字串 --从左向右将变量A中最先出现的"字串"(最靠左)以及其左边的一切都去掉(因为有个*) ##*字串 --从左向右将变量A中最后出现的"字串"(最靠右)以及其左边的一切都去掉 %字串*

ECMAScript 5(ES5)中bind方法简介备忘

一直以来对和this有关的东西模糊不清,譬如call.apply等等.这次看到一个和bind有关的笔试题,故记此文以备忘. bind和call以及apply一样,都是可以改变上下文的this指向的.不同的是,call和apply一样,直接引用在方法上,而bind绑定this后返回一个方法,但内部核心还是apply. 直接看例子: 1 2 3 4 5 6 7 8 9 10 11 12 var obj = {   a: 1,   b: 2,   getCount: function(c, d) {

curl语言备忘(3)

{curl 8.0 applet} {curl-file-attributes character-encoding ="gb2312"} {applet manifest ="manifest.mcurl", {compiler-directives careful? = true} } {include "vle-container.scurl"} ||本行为注释行,输出转义字符 第一行\n 第二行\n 4-1\t\t\t4-2\t4-3\t

C#中符号的作用备忘

~ 按位求补符: ! 非逻辑运算符: % 求余运算符: ^ 异或位运算符: & 且位运算符: |  或位运算符: * 既可以用作乘法符号,还可以表示为指针: + 表示数学运算符相加: = 用来表示赋值操作: \  用于转义符的开始,如\n表示换行: ”  包裹字符串: ’  包裹单个字符: < 逻辑运算符小: > 逻辑运算符大: , 用于分隔参数: . 用于表示对象成员选择器或小数点: / 表示除以的数学运算符: # 用于条件编译或划分代码块. #if #else 控制预编译的代码:如

EditPlus中的正则替换 备忘

最近在做一个机票数据抓取的项目,经常需要在代码中post一堆参数. 通过Httpfox copy下 所有row到Editplus,通过正则替换: (.*?)\s+?(.*)\nnew NameValuePair("\1","\2"),\n 可以直接生成Java代码.

jquery中的ajax方法(备忘)

参考:https://www.cnblogs.com/tylerdonet/p/3520862.html 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持. 3.timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设置. 4.a

VMS中解协议常用方法备忘

来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=282GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com 1.由ASICC编码的字符串转换为十六进制byte数组2.将指定字节数组中的一个字节序列解码为一个字符串 3.将二进制字符串转化为byte类型4.将SIM卡号转化为byte数组5.将BCD[6]转换为12位数字字符串6.关于IPAddress.HostToNetworkOrder(

matlab中配置Libsvm 防止备忘

1 首先我们要下载一个Libsvm 工具箱 这个在哪都是可以下载到的 2 我们将压缩包解压 我是解压在桌面上 地址为C:\Users\Administrator\Desktop\libsvm 3打开matlab 定位到如下的目录之下 4 我们按照这个流程输入以下代码 >> mex -setup Welcome to mex -setup.  This utility will help you set up a default compiler.  For a list of supporte

Delphi 的各版本定义,用于预编译参数中,避免忘记备忘之

DELPHI的版本宏: VER80 - Delphi 1 VER90 - Delphi 2 VER100 - Delphi 3 VER120 - Delphi 4 VER130 - Delphi 5 VER140 - Delphi 6 VER150 - Delphi 7 VER160 - Delphi 8 VER170 - Delphi 2005 VER180 - Delphi 2006 VER190 - Delphi 2007(兼容2006) VER185 - Delphi 2007 VER2