PHP POST请求相当于javascript one

时间:2018-04-30 15:34:31

标签: javascript php

我正在尝试编写一个简单的PHP插件,它将从服务器获取数据并为用户显示它们。

我已设法使用以下javascript代码访问服务器。但是,当我尝试使用PHP(这一直是我的目标)时,我只会出现超时或错误。

请指出我的PHP代码中与javascript相关的区别/错误?

工作JS示例:

    function myFunction() {
    $.ajax({
    url: 'URL',
    headers: {
        'Authorization':'KEY',
        'PortalAuthorization':'KEY', 
        'Content-Type':'application/json'
    },
    method: 'POST',
    dataType: 'json',
    data: JSON.stringify({"ServerName":"MAIN","List":null}),
    error: function(xhr, error){
       console.debug(xhr); 
       console.debug(error);
    },
    success: function(data) {
       console.log(data);
    }
 });
 }

尝试PHP等价物:

<?php
    function prepare_headers($headers) {
        return
        implode('', array_map(function($key, $value) {
                return "$key: $value\r\n";
            }, array_keys($headers), array_values($headers))
        );
    }
//json parsing
    $son->ServerName = "MAIN";
    $son->List = "null";
    $JS = json_encode($son);
    $len = strlen($JS);

    $headers = array('Authorization'=>"KEY",
    'PortalAuthorization'=>"KEY",
    'Content-Type' => "application/json", 'Content-Length' => $len
                    );

    $oo = prepare_headers($headers);
    $url = urldecode('URL');
    $context = stream_context_create(array( 'http' => array(       
        'method'=>"POST",
        'header'=> $oo,
        'Content' => $JS
    )));
    $result = file_get_contents($url,false,$context);
?> 

这会导致警告:无法打开流:HTTP请求失败!以及随后的致命错误:超过由行$result = file_get_contents($url,false,$context);

引起的最长执行时间30秒

我还试图做'header'=> $headers,但这导致了一个不同的错误:无法打开流:HTTP请求失败!再次$result = file_get_contents($url,false,$context);需要HTTP / 1.1 411长度

我不熟悉PHP,所以任何帮助都会受到赞赏。

0 个答案:

没有答案