***PHP请求服务curl以及json的解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 对于thinkphp框架,相信每一个php开发者都会有了解或者熟悉吧!前端很多都用的ajax的结合,前几天遇到了一个问题,就是请求另一个服务,也就是请求一个接口,然后对方返回一个json串,一开始对curl不熟悉,导致自己的程序不能很顺利的去处理请求服务后的json串!今天对curl又看了一下,问题解决了,现在就请求的的代码做如下显示:$new_url="www.

   对于thinkphp框架,相信每一个php开发者都会有了解或者熟悉吧!前端很多都用的ajax的结合,前几天遇到了一个问题,就是请求另一个服务,也就是请求一个接口,然后对方返回一个json串,一开始对curl不熟悉,导致自己的程序不能很顺利的去处理请求服务后的json串!今天对curl又看了一下,问题解决了,现在就请求的的代码做如下显示:
$new_url="www.xxx.com";
$requesturl="http://192.168.1.100:1234/test/test?url=".urlencode($new_url);
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, $requesturl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$info=curl_exec($ch);
// 关闭cURL资源,并且释放系统资源
curl_close($ch);
//$info为请求服务后的内容,$info会因设置的参数的不同,接受不同的内容,总之,要清楚自己想要的结果,然后再进行选项配置。$info里面并不一定是json串,要看服务的功能。若您请求的服务后,对方会给你返回json串的话,而你有需要将json串进行分解,那么请做一下的操作,就可以得到每个key和value:
假设我们$info = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
//对返回的json串进行decode,分解后与下面的数组一起合成json串
$info = json_decode($info,true);
$a  = $info['a'];
$b = $info['b'];
.....
这样就可以得到每个key和value了。至于一下你要做什么,那就是自己的事情了!

 



第二次更新时间:2012年11月30日11:50:15

因为之前对php没有过多的接触,有另一个方式显示服务的请求:
$new_url="www.xxx.com";
$requesturl="http://192.168.1.100:1234/test/test?url=".urlencode($new_url);
        $json_ret = file_get_contents($requesturl);
        $json_ret = mb_convert_encoding($json_ret, "UTF-8", "gb2312");//转码,(这里只是个例子)
        $result = json_decode($json_ret, true);//将json串进行译码,前提是返回来的是被json_encode处理后返回的。

在用file_get_contents函数采集网站时,有时会遇到明明用浏览器可以看,但就是采不到内容的问题。下面说一下问题的原因,以及解决方法。下面先说一下User-Agent。User-Agent是Http协议中的一部分,属于头域的组成部分,通俗的讲,User-Agent是一种向访问网站提供你所使用的浏览器类型、操作系统、浏览器内核等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计。比如对同一个网站(页面)用PC和移动终端访问展现的页面布局等一些信息是不一样的。下面说一些我们见到的问题:在用file_get_contents函数采集网站时,有时会遇到明明用浏览器可以看,但就是采不到内容的问题。这大概因为是服务器上做了设置,根据 User_agent判断是否为正常的浏览器请求,默认PHP的file_get_contents函数是不发送UA的,如果要采集这样的网站,我们就要让PHP模拟浏览器发送UA,这样对方的服务器就会以为我们是用浏览器是浏览,而返回正常的内容。
发送UA方法很简单,在使用file_get_contents函数前加上这一句:
ini_set('user_agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3');对于Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3,可根据需要自行修改成其他的。加上这样的头设置,就不会出现那样的问题。这也就是平时说的伪装。

 

json_encode()/json_decode()学习链接:
     http://blog.csdn.net/nailwl/article/details/5687363
     http://cn2.php.net/json_decode
php中curl选项设置:
     http://www.cnblogs.com/c3055/archive/2011/08/18/2143832.html
     http://www.wapm.cn/phpdoc/zh/ref.curl.html
ini_set():
     http://hi.baidu.com/bing2liuliu/item/ee3abcbe6a302547ba0e12a0

wampserver中有的没有选择curl扩展,请点击:
http://blog.sina.com.cn/s/blog_6ce9e8870101bq0r.html进行配置

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
1天前
|
JSON PHP 数据格式
PHP解析配置文件的常用方法
INI文件是最常见的配置文件格式之一。
|
4天前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发深度解析####
本文作为技术性文章,深入探讨了PHP与MySQL结合在动态网站开发中的应用实践,从环境搭建到具体案例实现,旨在为开发者提供一套详尽的实战指南。不同于常规摘要仅概述内容,本文将以“手把手”的教学方式,引导读者逐步构建一个功能完备的动态网站,涵盖前端用户界面设计、后端逻辑处理及数据库高效管理等关键环节,确保读者能够全面掌握PHP与MySQL在动态网站开发中的精髓。 ####
|
5天前
|
PHP 开发者 容器
PHP命名空间深度解析与最佳实践####
本文深入探讨了PHP中命名空间(namespace)的机制、应用场景及最佳实践,旨在帮助开发者有效避免命名冲突,提升代码的组织性和可维护性。通过实例讲解,本文将引导您理解如何在实际项目中灵活运用命名空间,以及如何遵循业界公认的最佳实践来优化您的PHP代码结构。 ####
|
5天前
|
数据库连接 PHP 开发者
PHP中的异常处理深度解析####
【10月更文挑战第29天】 本文深入探讨了PHP中的异常处理机制,通过实例演示如何有效地捕获和处理运行时错误,提升代码的健壮性和可维护性。我们将从基础概念出发,逐步深入到自定义异常类的应用,以及如何在复杂项目中实施最佳实践。 --- ###
25 4
|
4天前
|
PHP 开发者
PHP 7新特性深度解析及其最佳实践
【10月更文挑战第31天】本文将深入探讨PHP 7带来的革新,从性能提升到语法改进,再到错误处理机制的变革。我们将通过实际代码示例,展示如何高效利用这些新特性来编写更加健壮和高效的PHP应用。无论你是PHP新手还是资深开发者,这篇文章都将为你打开一扇窗,让你看到PHP 7的强大之处。
|
4天前
|
安全 编译器 PHP
PHP 8新特性解析与实践应用####
————探索PHP 8的创新功能及其在现代Web开发中的实际应用
|
7天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
15天前
|
PHP 数据安全/隐私保护 开发者
PHP 7新特性解析与实践
【10月更文挑战第20天】本文将深入浅出地介绍PHP 7的新特性,包括性能提升、语法改进等方面。我们将通过实际代码示例,展示如何利用这些新特性优化现有项目,提高开发效率。无论你是PHP新手还是资深开发者,都能从中获得启发和帮助。
|
17天前
|
PHP 开发者 UED
PHP中的异常处理深度解析####
本文深入探讨了PHP中的异常处理机制,旨在帮助开发者更好地理解和运用try-catch结构来提升代码的健壮性和可维护性。通过实例讲解与最佳实践分享,读者将学会如何有效地捕捉、处理并记录异常,从而避免程序因未预见的错误而崩溃,确保应用的稳定性和用户体验。 ####
|
3天前
|
前端开发 中间件 PHP
PHP框架深度解析:Laravel的魔力与实战应用####
【10月更文挑战第31天】 本文作为一篇技术深度好文,旨在揭开PHP领域璀璨明星——Laravel框架的神秘面纱。不同于常规摘要的概括性介绍,本文将直接以一段引人入胜的技术剖析开场,随后通过具体代码示例和实战案例,逐步引导读者领略Laravel在简化开发流程、提升代码质量及促进团队协作方面的卓越能力。无论你是PHP初学者渴望深入了解现代开发范式,还是经验丰富的开发者寻求优化项目架构的灵感,本文都将为你提供宝贵的见解与实践指导。 ####

推荐镜像

更多