CURL确实是一个不错的好工具,不仅在PHP中还是其他的操作系统中,都是一个非常好用的。但是如果你有些参数没有用好的话,那可能会得不到自己理想中的结果
在通常情况下,我们使用 CURL 来提交 POST 数据的时候,我们已经习惯了这样的写法:
复制代码 代码如下:
curl_setopt( $ch, CURLOPT_POSTFIELDS,$post_data);
但是这样的写法在有时候并不会很好用,可能会得到服务器返回的 500 错误。但是我们尝试在使用 Socket 方式向服务器提交数据的时候,我们会得到非常正确的结果。
例如我们在服务器上面存在一个如下的 PHP 文件:
复制代码 代码如下:
当我们采用 CURL 在不注意细节的前提下向服务器发送一些数据,我们可能得到下面这样的结果,这不是我们理想中的结果:
复制代码 代码如下:
[CONTENT_TYPE] => multipart/form-data; boundary=—————————-f924413ea122
但是如果我们在采用 http_build_query($post_data) 来替代 $post_data 再向这个 PHP 脚本提交数据的时候,我们就会得到和上面不同的结果,这才是我们理想中的结果:
复制代码 代码如下:
[CONTENT_TYPE] => application/x-www-form-urlencoded
从上面这个例子中不难看出,使用 CURL 并且参数为数据时,向服务器提交数据的时候,HTTP头会发送Content_type: application/x-www-form-urlencoded。这个是正常的网页
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn