php模拟post请求,获取不到数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php模拟post请求,获取不到数据相关的知识,希望对你有一定的参考价值。

用post在线模拟请求,图一格式能获取到数据,图二就不能。无其他需要添加。应该如何写成php,保证能获取到返回的值。搜罗的代码(如下)已试过,显示请求成功,但是print_r($a);返回为。$url = 'http://localhost/index.php';//数据$data = array( 'token' => 'XXX', 'guid' => 'XXX', 'name' => 'XXX' );//讲post请求数据生成 URL-encode 之后的请求字符串$content = http_build_query($data);//数据长度$content_length = strlen($content);//构造请求post头$options = array( 'http' => array( 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded" . "Content-length: $content_length", 'content' => $content ));//执行请求,填入请求头信息if(file_get_contents($url, false, stream_context_create($options))) echo 'post请求成功!';$a= file_get_contents($url, false, stream_context_create($options));print_r($a);

这个问题我没见过,很感兴趣
类似的问题我见过一些。您是不是还上传了什么东西,然后请你把上传上限复原,如果就是两个字符串的话不用那么大。如果提示你大小出现问题就是别的问题了
修改配置的话,记得重启Apache
然后我的解决方法就是,把代码删除,重打一遍
只是传两个字符串我不信不好使
还有一个很恶心的问题,缓存
如果再不行就去重新建一个文件测试下。追问

使用的在线post,直链访问就获取不到,把参数放入post参数就能获取到,这是什么情况

参考技术A 如果你是把参数直接放到url后面的,那么不管你采用的是post方式还是get方式,后台程序都必须用get方式才能获取到参数的值,比如说像图二那样的发送方式,index.php中用$_GET['name']、$_GET['guid']、$_GET['token']就能取到三个参数的值了。
而如果index.php硬性规定只能用post方式获取数据,那么你就不能把参数加到url后面,只能放到post参数中,就像图一那样。如果用php来模拟请求,就应该把参数放到body中而不是请求头中。本回答被提问者采纳
参考技术B

get和post模式不同的哦,这有两种模式的例子:

https://blog.csdn.net/change_any_time/article/details/79644185

PHP中怎样发送post请求并获取网页?

比如用PHP向http://example.com/index.php 发送post请求,再将请求后的网页echo ,怎么做到?

    $post='POST数据';
    // 初始化
    $curl = curl_init('URL');
    $header = array();
    $header[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36';
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    // 不输出header头信息
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 保存到字符串而不是输出
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    // post数据
    curl_setopt($curl, CURLOPT_POST, 1);
    // 请求数据
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
    // 是否抓取跳转后的页面
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;

参考技术A 你是要取到B处理完后的返回状态,还是说要取B处理完后调用A的a.php时所带的参数,如果只是取所带的参数,你在a.php 里面直接$_GET['result']就取到了,

以上是关于php模拟post请求,获取不到数据的主要内容,如果未能解决你的问题,请参考以下文章

php curl模拟post请求提交数据样例总结

php接收不到java程序post过来的数据

php curl如何直接转发当前php接收的headers?get请求如何直接转发get参数?post请求如何直接转发post参数?

解决Vue axios post请求,后台获取不到数据的问题方法

php ajax post数据接收不到

在PHP中怎么接收post过来的JSON数据