1
rickygao 2019-06-23 09:10:21 +08:00 via Android
你自己把 json 打印出来比较一下不就完了,还至于来这问
|
2
wangsongyan 2019-06-23 09:15:22 +08:00 via iPhone
不懂 PHP,不过 data 是 object,不是 array
|
3
LeeLou OP @rickygao ,打印出来看过,其实看不出任何区别。我还把 python 那边打印出来的字符串,直接输入 php 里作为字符串,提交了还是不对,难道是我用的函数方法不对吗? 但是返回代码的格式却是一模一样的
|
4
wangsongyan 2019-06-23 09:28:47 +08:00 via iPhone
@wangsongyan sorry,查了下不是这个问题。比较下生成的 json 字符串吧
|
5
RobinT9 2019-06-23 09:30:28 +08:00 via iPhone
想看你 py 成功的字符串
|
6
Trim21 2019-06-23 09:32:31 +08:00 via iPhone
$paras['sendInfo'] ][0]=$sendInfo;
|
7
Trim21 2019-06-23 09:34:00 +08:00 via iPhone
而且上面下面的手机号也不一样…生成的 json 真的一样吗
|
8
oott123 2019-06-23 11:52:44 +08:00 via Android 1
你都把 python 的 json 放到 php 里都不对,还在怀疑 json ?不应该调查下发请求的方法吗?
|
9
LeeLou OP |
10
wo642436249 2019-06-23 13:22:58 +08:00 via Android
生成的是一个 json 字符串
|
11
garlics 2019-06-23 13:25:52 +08:00 via Android
你看下 funMain 这个方法参数需要传的是字符串还是数组
|
12
Foctee 2019-06-23 13:53:37 +08:00
楼主贴出的 php 代码有两个语法错误
$content=’ this is a test message'; 楼主想要的应该是=> $content= 'this is a test message'; $paras['sendInfo'] ][0]=$sendInfo; 楼主想要的应该是=> $paras['sendInfo'][0]=$sendInfo; 然后我把修改后的代码运行了之后,json 输出的是=> {"content":"this is a test message","funCode":"1002","applicationId ":"HsqjSYsn6QjTrqzdW","password":"6VnLZlVwKf","sendInfo":[{"sendId":"0","mobile" :"18899990000"}]}" |
13
imdong 2019-06-23 14:15:00 +08:00
根据 json 规范(如果我没记错的话),json 中的 key 和 字符串 value 必须用双引号。
而 php 生成的 json 是符合这个规范的(相关我已知的所有规范) 而楼主提供的 py 代码中,json 是 单引号。 是创建一个对象,然后生成 json 么? 假设如此,在 php 中如果,是数组 不能用 $paras['sendInfo'] ][0]=$sendInfo 要改成 ``` $paras = array( 'content' => $content, 'funCode' => $funcode, 'applicationId' => $ApplicationID, 'password' => $Password, 'sendInfo' => [] ); $sendInfo = array( 'sendId ' => '0', 'mobile ' => '18899990000'//手机号码 ); $paras['sendInfo'][] = $sendInfo; ``` 不然 $paras['sendInfo'] 会是一个对象 对象的 key 是 0 |
14
Dogergo 2019-06-24 09:47:33 +08:00
你需要看接口需要的是一个 JSON 字符串还是一个 JSON 对象,php json_encode 是默认字符串的话,如果需要转成 json 对象需要传递额外参数 JSON_FORCE_OBJECT
|
15
LeeLou OP |
16
imdong 2019-06-24 09:59:44 +08:00
!!!!!!! 5.1.6 ???你没打错吧,不是 7.1 ?
不好意思,版本太老没用过,劝退了。 |
17
garlics 2019-06-24 14:53:47 +08:00
@LeeLou 这个不一定,或许你可以试下$result=$client->funMain($paras);
你可以看下他这个函数是怎么实现的啊 |
18
encro 2019-06-24 15:14:34 +08:00
为什么不怀疑是 wsdl 的问题,PHP 的 wsdl 是有一点不标准的,有比较 encode 的结果吗?
另外,json_encode 有参数,建议看看 https://www.php.net/manual/en/function.json-encode.php |
21
LeeLou OP @encro 肉眼看不出区别的。 而且也把 python 生成的 encode 结果复制到 php 里作为字符串了,也是不能正常工作
|
22
cquptzzq 2019-06-25 21:02:06 +08:00
找个网站把生成的 json 弄进去检查下格式就出来了。http://www.bejson.com/
php 的 json_encode()几乎不可能出错,官方的常用函数都出错,可就笑死人了。 c++和 java 倒是容易转 json 出错,最常见的就是有数字的情况,json 要求 key 是字符串,很多 java 和 c++都是拿的网上流传的方法转的 json,那些方法细节可能有问题。 我就见过 java 生成出这样的 json: {1: "a"} |