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

相关文章

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

springboot2.1.3 hystrix集成及hystrix-dashboard监控详解

《springboot2.1.3hystrix集成及hystrix-dashboard监控详解》Hystrix是Netflix开源的微服务容错工具,通过线程池隔离和熔断机制防止服务崩溃,支持降级、监... 目录Hystrix是Netflix开源技术www.chinasem.cn栈中的又一员猛将Hystrix熔

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

python之uv使用详解

《python之uv使用详解》文章介绍uv在Ubuntu上用于Python项目管理,涵盖安装、初始化、依赖管理、运行调试及Docker应用,强调CI中使用--locked确保依赖一致性... 目录安装与更新standalonepip 安装创建php以及初始化项目依赖管理uv run直接在命令行运行pytho

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

MySQL中REPLACE函数与语句举例详解

《MySQL中REPLACE函数与语句举例详解》在MySQL中REPLACE函数是一个用于处理字符串的强大工具,它的主要功能是替换字符串中的某些子字符串,:本文主要介绍MySQL中REPLACE函... 目录一、REPLACE()函数语法:参数说明:功能说明:示例:二、REPLACE INTO语句语法:参数

redis数据结构之String详解

《redis数据结构之String详解》Redis以String为基础类型,因C字符串效率低、非二进制安全等问题,采用SDS动态字符串实现高效存储,通过RedisObject封装,支持多种编码方式(如... 目录一、为什么Redis选String作为基础类型?二、SDS底层数据结构三、RedisObject

springboot整合mqtt的步骤示例详解

《springboot整合mqtt的步骤示例详解》MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,适用于物联网设备之间的通信,本文介绍Sprin... 目录1、引入依赖包2、yml配置3、创建配置4、自定义注解6、使用示例使用场景:mqtt可用于消息发