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. What is a Back Order

    What is a Back Order A back order is a customer order that has not been fulfilled. A back order gene ...

  2. Spring 事务 readOnly 到底是怎么回事?

    Spring的事务经常会有这样的配置: 1 <tx:method name="search*" read-only="true" /> 或者这样的注 ...

  3. yml 后面的配置覆盖前面的

    事情是这样的: a: b: c: tomcat d: hoho # 中间还隔了好多 a: b: c: tomcat 这种情况下,后面的配置会覆盖前面的所有配置,即 a.d = hoho 也会被覆盖 y ...

  4. 了解cron以及使用cron定时备份MySQL

    cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动.关闭这个服务: /sbin/service c ...

  5. [转]SpringMVC+ Mybatis 配置多数据源 + 手动切换数据源

    正确可行的解决方法:使用Spring提供的AbstractRoutingDataSource类来根据请求路由到不同的数据源.具体做法是先设置两个不同的dataSource代表不同的数据源,再建一个总的 ...

  6. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库03 —— 安装HAWQ 2.3.0.0

    一. HAWQ2.3.0环境准备[全部主机节点]: 1, vim /etc/sysctl.conf,编辑如下内容: kernel.shmmax= kernel.shmmni= kernel.shmal ...

  7. Java泛型知识点全方位总结

    前言 我一直认为泛型是编程语言设计中一个非常基本和重要的概念.Java中的泛型是什么?他们为什么在那里?他们是如何发展的?在学习基础知识时,对仿制药的透彻理解是非常重要的.因此,我阅读了<Jav ...

  8. 媳妇要转java开发,我该怎么办?

    我是一名5年的java开发者,媳妇是一个5年的软件实施工程师,我们结婚快一年了,这几天她突然对我说,她想转java开发,让我辅导她学习java,我该怎么弄,我心底是不愿意她转开发的,毕竟她年龄也不小了 ...

  9. Spring data Jpa 分页从1开始,查询方法兼容 Mybatis,分页参数兼容Jqgrid

    废话少说 有参数可以设置 在org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties 中 /** * Whethe ...

  10. 关于v$librarycache的几个字段含义

    对v$librarycache中的get,pin和reload的含义: Gets: (Parse) The number of lookups for objects of the namespace ...