PHP调用接口用post方法传送json数据
1、核心代码:
<?php
require("helper.php");
header('content-type:text/html;charset=utf-8'); $key = 'C43D436036E643F5AFA654FED758BCF7'; //参数数组
$post_data = array (
"parter" => '2308',
"orderid" => '201711021121',
); //签名
ksort($post_data);//键按ASCII码升序排序
$preSignString=getPreSignString($post_data);
$sign = md5($preSignString.'&key='.$key);
$sign=strtoupper($sign);//大写 //签名参数添加到参数数组
$post_data['sign']=$sign; //参数转成json
$parameters =json_encode($post_data); //发送请求
$url='http://localhost:64781/api/Query/QueryStatus';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch); //处理返回数据
$responseData=json_decode($response,true);//发序列化为数组 print_r($responseData);
post.php
2、工具类代码:
<?php /*
* 获取待签名字符串
* */
function getPreSignString($array)
{
$prestr=''; if(empty($array))
return $prestr;
else
{
foreach($array as $key=>$value){
if(!empty(trim($value)) && strtolower($key)!='sign') {
$prestr.=$key.'='.$value.'&';
}
} if(!empty($prestr)){
$length=strlen($prestr);
$prestr=substr($prestr,0,$length-1);//去掉最后一个‘&’
} return $prestr;
}
}
helper.php
3、调试:
3.1 远程接口接收数据包:
以c#为例(以流的形式接收):
Stream requestData = HttpContext.Current.Request.InputStream;
//获取参数
byte[] b = new byte[requestData.Length];
requestData.Read(b, , (int)requestData.Length);
string postdata = Encoding.UTF8.GetString(b);
postdata 结果如下:
{"orderid":"201711021121","parter":"2308","sign":"A75F1B4687105C84666F0812AB24232D"}
3.2 远程接口返回数据包(这里把接收的json转为数组):
Array ( [orderid] => 201711021121 [ekaorderid] => 17110213495685030814 [opstate] => 1 [parter] => 2308 [ovalue] => 100.1000 [code] => 0000 [msg] => 成功 )
PHP调用接口用post方法传送json数据的更多相关文章
- jquery通过ajax方法获取json数据不执行success
1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准 ...
- jquery通过ajax方法获取json数据不执行success回调
问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准写法,导致总是执行error回调方法 解决方案:使json格式务必符合下述 ...
- vue+element ui项目总结点(四)零散细节概念巩固如vue父组件调用子组件的方法、拷贝数据、数组置空问题 等
vue config下面的index.js配置host: '0.0.0.0',共享ip (假设你的电脑启动了这个服务我电脑一样可以启动)-------------------------------- ...
- Jquery-ajax()方法提交json数据
1.ajax()提交json数据代码 var strJson = getStrPayJson(); $.ajax({ type: "POST", url: "/userc ...
- HttpClient以json形式的参数调用http接口并对返回的json数据进行处理(可以带文件)
1.参数的url就是被调用的地址,map是你要传的参数.参数转成json我使用的是gson方式转换的. 主要使用的jar包有httpclient-4.5.3.jar.httpcore-4.4.6.ja ...
- c# 后台调用接口接收传过来的json
public string GetRequestTest(string url) { HttpWebRequest httpWebRequest = (HttpWebRequest)WebReques ...
- 四种方法解析JSON数据
(1)使用TouchJSon解析方法:(需导入包:#import "TouchJson/JSON/CJSONDeserializer.h") //使用TouchJson来解析北京的 ...
- 返回数据中提取数据的方法(JSON数据取其中某一个值的方法)
返回数据中提取数据的方法 比如下面的案例是,取店铺名称 接口返回数据如下: {"Code":0,"Msg":"ok","Data& ...
- 前端传送JSON数据,报Required request body is missing
声明: 后端为Java,采用SSM框架 前端一个JSON.stringify()传来的json字符串,后端一般用@RequestBody标签来定义一个参数接收 但问题在于,当我使用get方式传JSON ...
随机推荐
- npm安装教程
一.使用之前,我们先来掌握3个东西是用来干什么的. npm: Nodejs下的包管理器. webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资 ...
- 模拟真实点击click,专门对付clickoutside
var evmousedown = document.createEvent('HTMLEvents'); // evmousedown.clientX = 88 // evmousedown.cli ...
- SNF快速开发平台成长史V4.5-Spring.Net.Framework-SNF软件开发机器人
SNF快速开发平台成长史 SNF框架CS\BS 视频教程 https://pan.baidu.com/s/1dFegFKX SNF开发机器人教程:链接:https://pan.baidu.com/s/ ...
- vscode: Visual Studio Code 常用快捷键1
ctrl + pAlt + shift 多行编辑
- Codeforces Round #313 (Div. 2) C. Gerald's Hexagon(补大三角形)
C. Gerald's Hexagon time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- ubuntu Ros环境halcon的一个程序
这个首先并不是我一边做实验一遍记录的,而是我做完成以后才想起来做个分享的,所以中途遇到的很多问题,并没有来得及记录下来,现在写的这些都是后话了 首先呢!我们不需要在ROS下写halcon的程序也是可以 ...
- HTTP 03 HTTP 报文
客户端的HTTP报文, 叫做请求报文 服务器端的叫做 响应报文. HTTP 报文本身是由多行 (用 CR+LF 作换行符) 数据构成的字符串文本. HTTP 报文大致分为报文首部 和 报文主体 两部分 ...
- fiddler使用指南
fiddler使用指南 fiddler 设置 如果要手机抓包的话,需要设置fiddler, 允许远程设备连接 tools/fiddler options/connection/allow remote ...
- NuGet Packages are missing,This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.
错误内容 This project references NuGet package(s) that are missing on this computer. Use NuGet Package R ...
- 【Dubbo 源码解析】05_Dubbo 服务发现&引用
Dubbo 服务发现&引用 Dubbo 引用的服务消费者最终会构造成一个 Spring 的 Bean,具体是通过 ReferenceBean 来实现的.它是一个 FactoryBean,所有的 ...