PHP文件获取带有发布数据的内容



可能的重复:
Drupal登录通过REST服务器

我一直在使用此代码作为文件获取内容,并带有帖子数据,但收到错误

Warning: file_get_contents(http://50.116.19.49/rest/user/login.json): failed to open  
stream: HTTP request failed! HTTP/1.0 406 Not Acceptable: Unsupported request content type 
application/x-www-form-urlencoded in C:xampphtdocspost.php on line 20

我的代码是

<?php
$postdata = http_build_query(
array(
    'var1' => 'myuser',
    'var2' => 'pwd'
)
);
$opts = array('http' =>
array(
    'method'  => 'POST',
    'header'  => 'Content-type: application/x-www-form-urlencoded',
    'content' => $postdata
)
);
$context  = stream_context_create($opts);
$result = file_get_contents('http://50.116.19.49/rest/user/login.json', false,    
$context);
?>

任何人都可以在此方面提供帮助。

我们可以使用curl代替函数file_get_contents($ request);这是卷曲的代码:

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL,$request);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_TIMEOUT, 15);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
 $xml_response = curl_exec($ch);

$请求是您的URL。

看来,这款特定的服务器期望在调用/login.json时在帖子数据中看到JSON,因此您应该在代码中重写一些内容。

  1. 更改$postdata结构:

    $postdata = json_encode(array(
        'var1' => 'myuser',
        'var2' => 'pwd'
    ));
    
  2. 更改Content-Type标头:

    $opts = array('http' => array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/json',
        'content' => $postdata
    ));
    

file_get_contents在HTTP流包装器中也将返回FALSE。错误是指HTTP响应的任何错误条件,例如400范围的HTTP状态代码,例如406不可接受:您的情况下不支持的请求内容类型。

您可以通过将ignore_errors HTTP上下文选项设置为 TRUE

来禁用 false"错误" 行为。
'ignore_errors' = TRUE,

然后,您也将在错误情况下获得请求的响应主体。

要获得状态代码本身,您可以使用特殊的$http_response_header变量。

有关这些设置以及如何解析响应标题的讨论,请先查看使用PHP流的Head。但是,在您的情况下,响应主体可能已经包含有关问题的更多信息。

在您的特定问题中,您需要仔细检查请求的编码是否由服务器支持。由于我不知道您的服务器,我对此不能说太多。对错误代码的引用可能会为您提供一些启示。您正在使用的 content-type:application/x-www-form-urlencoded 似乎有问题。

例如,正如本网站上的其他聪明人告诉我的那样,端点是Drupal。如果是这样,则在类似的问题中提出以下建议:

您必须启用服务端点的application/x-www-form-urlencoded内容类型。

做以下操作:服务 - &gt;编辑资源 - &GT;选择"服务器"选项卡 - &gt;启用"应用程序/x-www-form-urlenCoded"就是这样。

希望这对您有帮助。

相关内容

  • 没有找到相关文章

最新更新