PHP file_get_content在远程通信之前的准备,服务器中json_decode解析详解

本文主要是介绍PHP file_get_content在远程通信之前的准备,服务器中json_decode解析详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

file_get_content在远程通信之前:

1.需要给数据生成请求字符串,

2.转化为二进制流,

3.进行file_get_content远程访问。

4.再返回的数据中,在本地服务器可以用json_decode进行解析。


代码实现,以及对json_decode()函数解析的详解:

<?php
/**
 * Created by PhpStorm.
 * User: 洋   汪
 * Date: 2016/7/20
 * Time: 20:00
 */
header("Content-type:text/html;charset=utf-8");
function postTrans($url, $data)
{
    //发送到服务器之前应该如何对数据进行编码
    //POST4中编码格式:
    //1.(默认)application/x-www-form-urlencoded
    //2.multipart/form-data(上传文件时候)
    // 3.application/json
    // 4.text/xml

    //http_build_query()生成URL-encode之后的请求字符串。
    $content = http_build_query($data);
    $requestPost = array(
        "http" => array(
            "header" => "Content-Type:application/x-www-form-urlencoded\r\n" .
                "Content-Length:" . strlen($content) . "\r\n" .
                "User-Agent:MyAgent/1.0\r\n",
            "method" => "POST",
            "content" => $content
        )
    );

    //转化为计算机的二进制流
    $context = stream_context_create($requestPost);
    //进行跨域访问
    $result = file_get_contents($url, false, $context, -1, 40000);
    return $result;
}


//调用远程函数并传入远程ip服务器和数据,进行远程访问。
$result = postTrans("http://192.168.4.101:90/PHPStudy4/server.php", array("username" => "admin", "password" => "admin"));
//不解析的情况下。输出:未用解析时直接输出:{"code":"101","pass":"111"}
echo "未用解析时直接输出:" . $result . "<br>";
//不解析里边的数值是拿不出来的。输出:未用解析时['code']{
echo "未用解析时['code']" . $result["code"] . "<br>";


//接下来讲解,并用json_decode进行解析。
//当传过来的值为json_encode()方式传递时,php中用json_decode()解析。
//json_decode(接收到的数据,true/false(false为默认的))
//false情况:把接收的数据解析成对象;
//true情况:把传递的值,解析为数组。

//false情况的直接输出造成fatal errorObject of class stdClass could not be converted to string
//stdClass的对象不能转换为字符串
//echo "解析false情况:" . json_decode($result) . "<br>";

//false情况以对象调用。输出:解析false情况->code调用对象:101
echo "解析false情况->code调用对象:" . json_decode($result)->code . "<br>";

//true情况以数组调用:
//true情况直接输出,输出Array这个词
echo "解析true情况调用对象:" . json_decode($result, true) . "<br>";
//数组形式调用。输出:解析true情况['']数组调用:101
$r = json_decode($result, true);
echo "解析true情况['']数组调用:" . $r["code"] . "<br>";
?>



这篇关于PHP file_get_content在远程通信之前的准备,服务器中json_decode解析详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102159

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2