php - php在向XML服务器发送数据时指定内容长度时发生了内容长度错误

  显示原文与译文双语对照的内容

我有一个奇怪的错误。 尝试使用以下代码将数据发布到XML数据:

`$url ="http://www.example.appspot.com/clients";

$post_string =" <客户端>"

<id> </id>

<姓> ABCDE </lastName>

<firstName> </firstName>

<公司> </公司>

<电话> </电话>

<移动> </移动>

<传真> </传真>

<网站> </网站>

<电子邮件> </电子邮件>

<addressLine1> </addressLine1>

<addressLine2> </addressLine2>

<addressLine3> </addressLine3>

<镇> </城镇>

<县> </县>

<邮编> </邮政编码>

</客户端>";

$header ="发布 http/1.0 rn";
$header 。="Content-Type: 文本/xml rn";
$header 。="Content-Length:"。指向( $post_string ) 。"rn";
$header 。= content-transfer-encoding: 文本 rn";
$header 。="连接:关闭 rnrn";
$header 。="Content-Length:"。指向( $post_string ) 。"rn";
$header 。= $post_string;

$ch = curl_init() ;
curl_setopt ( $ch,CURLOPT_URL,$url ) ;

curl_setopt ( $ch CURLOPT_USERPWD"用户名:密码") ;
curl_setopt ( $ch,CURLOPT_CUSTOMREQUEST,$header);
curl_setopt ( $ch,CURLOPT_RETURNTRANSFER,1 ) ;
curl_setopt ( $ch,CURLOPT_TIMEOUT,4 ) ;`

但这将返回这里错误:

要求的POST请求需要 Content-Length header 。

( 来自 curl_exec ( $ch ) )

这是打印出来的header 数据( 打印 $header):

发布 http/1.0 Content-Type: 文本/xml Content-Length: 以下命令>/lastName id ABCDE/lastName> town/lastName>/lastName/lastName website website website/firstName/company 。

想知道如何解决这个问题,我已经明确指定了内容长度 header ! 还有谁有这个问题? 你是怎么解决的?

时间: 原作者:

中手动引用参考 CURLOPT_CUSTOMREQUEST

使用HTTP请求代替"获取"或者"头部"时使用的自定义请求方法。 这对于执行"删除"或者其他更加晦涩的HTTP请求非常有用。 有效的值是像"获取","POST","连接"等等;换句话说,收费不在这里输入整个HTTP请求行,这里。 例如输入"获取/index.html http/1.0rnrn"是不正确的。

因此,CURLOPT_CUSTOMREQUEST 选项应该只设置为 "POST"

我认为你可以能希望将 $header 字符串转换为使用 CURLOPT_HTTPHEADER 选项减少的头的array,但不包括顶部 POST header 。 而且,不要在标题中包含 $post_string - 它属于请求主体。

原作者:
...