对于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进行配置

***PHP请求服务curl以及json的解析的更多相关文章

  1. android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据

    补充:关于PHP服务端可能出现的问题: 如果你刚好也像我一样,用php实现的服务端程序,采用的是apache服务器,那么虚拟主机的配置可能会影响到android应用的调试!! 在android应用中访 ...

  2. jsonObject jsonArray jsonTokener jsonStringer,json解析以及http请求获取josn数据并加以解析

    JSON的定义: 一 种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的 支持),从而可以在不同平台间进行 ...

  3. Android从服务端获取json解析显示在客户端上面

    Android从服务端获取json解析显示在客户端上面 百度经验:jingyan.baidu.com 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比,Jso ...

  4. curl 发送json请求

    curl 发送json请求 这个是在cmd环境下的输入:注意{\"userName\":\"helo\",\"id\":1}中间不能有空格 ...

  5. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

    Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...

  6. 解决ajax请求返回Json无法解析"\"字符的问题

    原因:获取身份证信息,涉及图片路径,存在“\”字符,导致Json解析错误 解决思路:将返回类型从"json"改成"text",此时返回的数据类型变成字符串,将字 ...

  7. JSON数据解析(转)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...

  8. JSON数据解析(GSON方式) (转)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 在上一篇博文<Andro ...

  9. 10分钟掌握XML、JSON及其解析

    引言 NOKIA 有句著名的广告语:“科技以人为本”.任何技术都是为了满足人的生产生活需要而产生的.具体到小小的一个手机,里面蕴含的技术也是浩如烟海,是几千年来人类科技的结晶,单个人穷其一生也未必能掌 ...

随机推荐

  1. hihocoder 1163 博弈游戏·Nim游戏

    1163 : 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob. Alice与Bob总是在进行各种各样的 ...

  2. wamp 提示 Directive allow_call_time_pass_reference is no longer avaiable in PHP

    在wamp运行时,提示"Directive allow_call_time_pass_reference is no longer avaiable in PHP",点击确定之后, ...

  3. $.parseJSON 将json 对象转换为array

    项目中,通过json2.js的JSON.parse(jsonstr)的时候,整个返回值是object $.parseJSON(jsonstr)返回的也是object 而我想要的是array(objec ...

  4. SharePoint2013 SharePoint-Hosted 模式 分页方法

    /**分页js插件 var ListPager = new listPaging(); 先调用start方法加载上下文 然后调用dataLoad方法查询第一页数据 需要设置几个属性值 ListPage ...

  5. 对css float 浮动的学习心得

    css float浮动详解 @(css float)[hasLayout|clear float|妙瞳] css float的定义和用法 float 属性定义元素在哪个方向浮动.以往这个属性总应用于图 ...

  6. jsp页面在IE8下文本模式自动为“杂项(Quirks)”导致页面显示错位

    最近在修改网站的响应式的页面时,由于都是套样式页面,修改过程都是粘贴复制,导致了一些细节问题在IE8下暴露出来: 遇到的问题就是在在Chrome,火狐页面都正常,唯独在IE8下页面样式显示乱样了,但是 ...

  7. Sicily 1510欢迎提出优化方案

    这道题我觉得是除1000(A-B)外最简单的题了……不过还是提出一个小问题:在本机用gcc编译的时候我没包括string.h头文件,通过编译,为什么在sicily上却编译失败? 1510. Mispe ...

  8. 九度OJ 1283 第一个只出现一次的字符

    题目地址:http://ac.jobdu.com/problem.php?pid=1283 题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现 ...

  9. python 自动化之路 day 01.1 数据类型

    一.变量二.数据类型2.1 什么是数据类型及数据类型分类2.2 标准数据类型:2.2.1 数字2.2.1.1 整型:2.2.1.2 长整型long:2.2.1.3 布尔bool:2.2.1.4 浮点数 ...

  10. C# 创建XML文档

    有些时候我们需要生成一个xml文档作为数据交换的容器.当然我们用拼接字符串的方法来进行构建xml,但是这种方法虽然简单有效,但是如果xml文档结构过于复杂,拼接字符串会让人眼花缭乱.这时候就需要C#给 ...