zoukankan      html  css  js  c++  java
  • php curl post数据的问题

    今天在做一个api增量的功能的时候出现了一个特别奇怪的问题。我用curl 想tomcat post数据的时候,tomcat竟然报错,所我post的数据

    没有正确或得。但是,我用curl post给我自己写的一个页面,就可以在$_POST数组中获得数据。

    为什么会出现这种问题那?

    原因是在构建post 数据的数量出现问题。。。

    1 function api_notice_increment($url, $data)
    2 {
    3 $ch = curl_init();
    4 curl_setopt($ch, CURLOPT_HEADER,0);
    5 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    6
    7 curl_setopt($ch, CURLOPT_URL, $url);
    8 curl_setopt($ch, CURLOPT_POST, 1);
    9 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    10 $lst['rst'] = curl_exec($ch);
    11 $lst['info'] = curl_getinfo($ch);
    12 curl_close($ch);
    13 return $lst;
    14 }
    15 $url = "http://localhost/test/post.api.php?app=test&act=testact";
    16 $data = array (
    17 'goods_id' => '1010000001224',
    18 'store_id' => '20708',
    19 'status' => 'GoodsDownshelf',
    20 );

    //post.api.php的代码

    <?php
    error_log(var_export($_POST,1),3,'d:/post.txt');

    执行上面的代码,在我的d:/生成的post.txt文件,其内容如下:

    array (
      'goods_id' => '1010000001224',
      'store_id' => '20708',
      'status' => 'GoodsDownshelf',
    )

    说明post的数据可以正常的获得。

    修改上的代码

    1 <?php
    2  function api_notice_increment($url, $data)
    3 {
    4 $ch = curl_init();
    5 curl_setopt($ch, CURLOPT_HEADER,0);
    6 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    7
    8 curl_setopt($ch, CURLOPT_URL, $url);
    9 curl_setopt($ch, CURLOPT_POST, 1);
    10 $data = http_build_query($data);
    11 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    12 $lst['rst'] = curl_exec($ch);
    13 $lst['info'] = curl_getinfo($ch);
    14 curl_close($ch);
    15 return $lst;
    16 }
    17 $url = "http://localhost/test/post.api.php?app=test&act=testact";
    18 $data = array (
    19 'goods_id' => '1010000001224',
    20 'store_id' => '20708',
    21 'status' => 'GoodsDownshelf',
    22 );
    23
    24
    25 api_notice_increment($url,$data);

    只是在执行 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);之前执行下$data = http_build_query($data);操作。

    删除d:/post.txt文件

    再次运行。

    再次打开d:/post.txt文件,其内容如下:

    array (
      'goods_id' => '1010000001224',
      'store_id' => '20708',
      'status' => 'GoodsDownshelf',
    )

    如果不将$data 进行http_build_query的话,java代码就不能获得post的数据,http_build_query以后就可以正常的获得了。

  • 相关阅读:
    SharePoint Framework (SPFx) 开发入门教程
    SharePoint 2013 Designer 入门教程
    SharePoint 2013 开发教程
    SharePoint 2013 入门教程
    SharePoint Online 部署SPFx Web部件
    SharePoint Online SPFx Web部件绑定数据
    SharePoint Online 创建SPFx客户端Web部件
    SharePoint Online 配置框架(SPFx)开发环境
    SharePoint Online 创建应用程序目录
    SharePoint Online 启用 IRM
  • 原文地址:https://www.cnblogs.com/ainiaa/p/2000262.html
Copyright © 2011-2022 走看看