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数据的更多相关文章

  1. jquery通过ajax方法获取json数据不执行success

    1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准 ...

  2. jquery通过ajax方法获取json数据不执行success回调

    问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准写法,导致总是执行error回调方法 解决方案:使json格式务必符合下述 ...

  3. vue+element ui项目总结点(四)零散细节概念巩固如vue父组件调用子组件的方法、拷贝数据、数组置空问题 等

    vue config下面的index.js配置host: '0.0.0.0',共享ip (假设你的电脑启动了这个服务我电脑一样可以启动)-------------------------------- ...

  4. Jquery-ajax()方法提交json数据

    1.ajax()提交json数据代码 var strJson = getStrPayJson(); $.ajax({ type: "POST", url: "/userc ...

  5. HttpClient以json形式的参数调用http接口并对返回的json数据进行处理(可以带文件)

    1.参数的url就是被调用的地址,map是你要传的参数.参数转成json我使用的是gson方式转换的. 主要使用的jar包有httpclient-4.5.3.jar.httpcore-4.4.6.ja ...

  6. c# 后台调用接口接收传过来的json

    public string GetRequestTest(string url) { HttpWebRequest httpWebRequest = (HttpWebRequest)WebReques ...

  7. 四种方法解析JSON数据

    (1)使用TouchJSon解析方法:(需导入包:#import "TouchJson/JSON/CJSONDeserializer.h") //使用TouchJson来解析北京的 ...

  8. 返回数据中提取数据的方法(JSON数据取其中某一个值的方法)

    返回数据中提取数据的方法 比如下面的案例是,取店铺名称 接口返回数据如下: {"Code":0,"Msg":"ok","Data& ...

  9. 前端传送JSON数据,报Required request body is missing

    声明: 后端为Java,采用SSM框架 前端一个JSON.stringify()传来的json字符串,后端一般用@RequestBody标签来定义一个参数接收 但问题在于,当我使用get方式传JSON ...

随机推荐

  1. Effective Java 第三版——63. 注意字符串连接的性能

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  2. 转:图像处理、显示中的行宽(linesize)、步长(stride)、间距(pitch)

    在图像数据传输和显示的过程中有一个不常用的参数:间距. 间距的名称: 它有很多的别名,在使用d3d显示的时候,它叫pitch:在用ffmpeg解码的时候,它叫linesize: 在用ffmpeg转换格 ...

  3. Selenium Web 自动化

    1 Selenium Web 自动化 - Selenium(Java)环境搭建 2 Selenium Web 自动化 - 如何找到元素 3 Selenium Web 自动化 - Selenium常用A ...

  4. Js 跳出两级循环的方法

    做过一个复杂的验证方法,需要两层each验证之后反正报错的信息.因为双重循环的问题,纠结了很久. /** * 验证input 的值 是否输入 flg:验证成功 false:验证失败 */ functi ...

  5. 手动安装mysql

    需要在本机(mac)上装个mysql,看到压缩版的体积最小,结果进入了手工安装的坑(正常有界面可以安装,但安装目录将是/usr/local/mysql),既然入了坑就填上吧. 1.解压到自己选择的目录 ...

  6. 框架源码系列八:Spring源码学习之Spring核心工作原理(很重要)

    目录:一.搞清楚ApplicationContext实例化Bean的过程二.搞清楚这个过程中涉及的核心类三.搞清楚IOC容器提供的扩展点有哪些,学会扩展四.学会IOC容器这里使用的设计模式五.搞清楚不 ...

  7. js中文输入法字符串截断

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. JVM可达性分析算法中,哪些可以作为 root ?

    被启动类(bootstrap 加载器)加载的类和创建的对象: JavaStack 中的引用的对象 (栈内存中引用的对象): 方法区中静态引用指向的对象: 方法区中常量引用指向的对象: Native 方 ...

  9. Timeline Storyteller 现已加入自定义图表库

    前言 下载地址: https://store.office.com/en-us/app.aspx?assetid=WA104381136&sourcecorrid=328f5e2b-e973- ...

  10. layui---form表单模块

    虽然对layui比较熟悉了,但是今天有时间还是将layui的form表单模块重新看一下. https://www.layui.com/doc/modules/form.html 一.更新渲染 layu ...