PHP如何通过Http Post请求发送Json对象数据?

因项目的需要,PHP调用第三方 Java/.Net 写好的 Restful Api,其中有些接口,需要 在发送 POST 请求时,传入对象。

Http中传输对象,最好的表现形式莫过于JSON字符串了,但是作为参数的接收方,又是需要被告知传过来的是JSON!

其实这不难,只需要发送一个 http Content-Type头信息即可,即 “Content-Type: application/json; charset=utf-8”,参考代码如下:

<?php
/**
 * PHP发送Json对象数据
 *
 * @param $url 请求url
 * @param $jsonStr 发送的json字符串
 * @return array
 */
function http_post_json($url, $jsonStr)
{
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_HTTPHEADER, array(
			‘Content-Type: application/json; charset=utf-8‘,
			‘Content-Length: ‘ . strlen($jsonStr)
		)
	);
	$response = curl_exec($ch);
	$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
	curl_close($ch);

	return array($httpCode, $response);
}

$url = "http://blog.snsgou.com";
$jsonStr = json_encode(array(‘a‘ => 1, ‘b‘ => 2, ‘c‘ => 2));
list($returnCode, $returnContent) = http_post_json($url, $jsonStr);

API服务端端接收客户端传过来的 “Content-Type: application/json; charset=utf-8”头信息后,再将 http body 数据(即 Json字符串)转换成 类对象!

时间: 2024-10-17 05:12:31

PHP如何通过Http Post请求发送Json对象数据?的相关文章

HTTP POST 发送JSON格式数据(解决Expect:100-continue 问题)

最近在开发的一个项目,需要涉及到使用Http请求发送比较大的数据,研究了挺长时间,遇到问题,解决问题,在此分享给大家 1.由于数据量较大,所以采用POST方式 传输数据(POST理论上不限制数据大小,但不同服务器都会有相应的默认设置限制数据大小) 2.由于项目需要,使用JSON格式的数据 代码示例: JAVA 版,使用Apache的commons-httpClient包 发送http请求,代码仅供参考,发送请求方式可根据自己需要进行修改 import org.apache.commons.htt

java模拟post请求发送json

java模拟post请求发送json,用两种方式实现,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求, 方法一: 1 package main.utils; 2 3 import java.io.*; 4 import java.net.HttpURLConnection; 5 import java.net.URL; 6 7 public class HttpUtilTest { 8 Log log = new Log(this.g

Ajax请求php返回json对象数据中包含有数字索引和字符串索引,在for in循环中取出数据的顺序问题

//php中的数组数据格式 Array ( [all] => Array ( [title] => ALL [room_promotion_id] => all ) [best_available_rate] => Array ( [title] => Best Available Rate [room_promotion_id] => best_available_rate ) [30] => Array ( [room_promotion_id] =>

将json对象数据保存到数据库对应的表中

问题描述  如何将json对象数据保存到数据库对应的表中. 分析问题   json数据内容不固定,json数据格式是固定的(name:value),数据库表结构是固定的,在json数据格式 与 数据库表结构之间建立一套对应规则,写一套逻辑解析这套对应规则. 1.json对象对应的数据库表需要确定. 2.json对象的节点对应数据库表的列需要确定. 3.json对象的value类型需要确定下来,才能对value值做相应的操作. 4.数据库表的主键列比较特殊,一般是自增长列,需要确定. 5.数据库记

php中json对象数据的输出转化

php中json对象数据的输出转化 public function get_my_now_citys(){ $datas=$this->_post('datas'); //前台js脚本传递给后端的object对象 if(!$datas){ echo '地址信息获取失败!'; } $latitude=$datas['latitude'];//维度 $longitude=$datas['longitude'];//经度 $rs=$this->get_my_addr_infos($longitude

IOS - 网络(HTTP请求、同步请求、异步请求、JSON解析数据)

1 // 2 // ViewController.m 3 // IOS_0129_HTTP请求 4 // 5 // Created by ma c on 16/1/29. 6 // Copyright © 2016年 博文科技. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 #import "MBProgressHUD+MJ.h" 11 12 @interface ViewController

ajax发送json格式数据

前后端在做数据交互的时候 一定一定要表明你所发的的数据到底是什么格式 前段后交互 你不能骗人家,不然后端开发人员来找你的时候会抄着一根凳子腿. 你的数据时什么格式 你就应该准确无误告诉别人是什么格式 那么怎么告诉后端你要发送的数据的格式是什么呢 form 表单是通过 他的 enctype 而 ajax 是通过 contentType,如果你要传送的数据是json(通常只有json格式) 你需要这么写 contentType:'application/json' 要怎样发送一个json格式的数据呢

javascript学习-创建json对象数据,遍历

之前我已经有讲过后台返回json数据到前台,并在前台遍历json数据. 这里讲下直接在JS里创建JSON数据,然后遍历使用~ 创建代码例如以下:(创建的是JSON对象) var YearSelect = {}; var Year = 2014; var DateOption; for (var i = Year; i < Year + 12; i++) { DateOption = {'Year':i, 'Month':i-Year+1}; // alert(DateOption.Year) Y

Jersey框架put请求发送JSON数据

想用jersey框架发送post请求,body带json格式参数 url:http//192.168.1.211/api/test body 数据为 {"action":"test"} 实现如下: 注意事项:引用jar包一定要正确,不然调试一堆报错. 这里引用包如下: jettison-1.3.jar 这个提供JSONObject 如果用其它的可能会报各种错误. jersey-bundle-1.9.jar  这个是jersey的捆绑包,一个解决问题 javax.ws