Home  >  Article  >  Backend Development  >  php fsockopen post json数据

php fsockopen post json数据

WBOY
WBOYOriginal
2016-06-06 20:27:512241browse

php fsockopen 可以 post json数据吗? 知道的请留下代码,在此谢过!

回复内容:

php fsockopen 可以 post json数据吗? 知道的请留下代码,在此谢过!

因为不清楚你所说的 json 数据具体是想要怎么提交, 故分以下两种情况做为展示.

第一种情况: 提交的整个数据就是JSON格式的内容.

1.php

<code class="php"><?php //要提交的数据
$post_fields = array('a'=>'hello', 'b'=>'world', 'c'=>'汉字');

$data = json_encode($post_fields);//转换为JSON格式的字符串

$data = array(
    'POST /123.php HTTP/1.0',//请求的地址
    'Host: localhost',
    'Content-type: application/x-www-form-urlencoded',
    'Content-length: '. strlen($data),//填充数据长度
    '',//请求头与数据的分隔符
    $data//填充数据体
);

//注意修改 域名和端口号
$sock = fsockopen("localhost", 800, $errno, $errstr, 30);

if (!$sock) die("$errstr ($errno) ");

fwrite($sock, implode("\r\n", $data));

$data = '';

while(!feof($sock)){//测试文件指针是否到了文件结束的位置
    $data .= fgets($sock,1024);
}

fclose($sock);

echo $data;</code>

与之对应的123.php文件的代码如下:

<code class="php"><?php $data = file_get_contents('php://input');

var_dump(json_decode($data));</code></code>

代码执行后的结果如下:

<code>HTTP/1.1 200 OK
Date: Mon, 21 Sep 2015 06:34:12 GMT
Server: Apache/2.4.12 (Win32) PHP/5.6.9
X-Powered-By: PHP/5.6.9
Content-Length: 118
Connection: close
Content-Type: text/html; charset=UTF-8

object(stdClass)#1 (3) {
  ["a"]=>
  string(5) "hello"
  ["b"]=>
  string(5) "world"
  ["c"]=>
  string(6) "汉字"
}
</code>

第二种情况: JSON 格式的数据做为 数据 进行提交.

在上面代码的基础上做如下改动:
1.php

<code>$data = 'xyz=' . json_encode($post_fields);//转换为JSON格式的字符串</code>

php fsockopen post json数据

123.php

<code class="php"><?php var_dump(json_decode($_POST['xyz']));</code></code>

执行结果与之前的一样.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn