Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Eurotours XML接口SOAP HTTP未经授权_Php_Xml_Soap - Fatal编程技术网

Php Eurotours XML接口SOAP HTTP未经授权

Php Eurotours XML接口SOAP HTTP未经授权,php,xml,soap,Php,Xml,Soap,我试图从中举出一个例子,但所有的SOAP函数调用都给了我答案 PHP致命错误:未捕获SoapFault异常:[HTTP]未经授权 这是我的密码: $soapClient = new SoapClient("https://ws.eurotours.at/accommodation/development/AccommodationService?wsdl",array('trace' => true)); $functions = $soapClient -> __getFuncti

我试图从中举出一个例子,但所有的SOAP函数调用都给了我答案

PHP致命错误:未捕获SoapFault异常:[HTTP]未经授权

这是我的密码:

$soapClient = new SoapClient("https://ws.eurotours.at/accommodation/development/AccommodationService?wsdl",array('trace' => true));
$functions = $soapClient -> __getFunctions();
$soapClient -> getLanguages(array("Client"=>"TESTXMLB2B"));
这只是来自文档测试的客户端,我不知道我是否有错

这是我的全部例外情况,我想知道这是否真的是授权问题,还是仅仅因为我在打电话时犯了错误:

object(SoapFault)#2 (9) {
  ["message":protected]=>
  string(12) "Unauthorized"
  ["string":"Exception":private]=>
  string(0) ""
  ["code":protected]=>
  int(0)
  ["file":protected]=>
  string(34) "/home/laurentiu/teste/testswap.php"
  ["line":protected]=>
  int(5)
  ["trace":"Exception":private]=>
  array(3) {
    [0]=>
    array(4) {
      ["function"]=>
      string(11) "__doRequest"
      ["class"]=>
      string(10) "SoapClient"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(5) {
        [0]=>
        string(224) "<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.eurotours.at/"><SOAP-ENV:Body><ns1:getLanguages/></SOAP-ENV:Body></SOAP-ENV:Envelope>
"
        [1]=>
        string(74) "https://ws.eurotours.at:443/accommodation/development/AccommodationService"
        [2]=>
        string(0) ""
        [3]=>
        int(1)
        [4]=>
        int(0)
      }
    }
    [1]=>
    array(6) {
      ["file"]=>
      string(34) "/home/laurentiu/teste/testswap.php"
      ["line"]=>
      int(5)
      ["function"]=>
      string(6) "__call"
      ["class"]=>
      string(10) "SoapClient"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(2) {
        [0]=>
        string(12) "getLanguages"
        [1]=>
        array(1) {
          [0]=>
          array(1) {
            ["Client"]=>
            string(10) "TESTXMLB2C"
          }
        }
      }
    }
    [2]=>
    array(6) {
      ["file"]=>
      string(34) "/home/laurentiu/teste/testswap.php"
      ["line"]=>
      int(5)
      ["function"]=>
      string(12) "getLanguages"
      ["class"]=>
      string(10) "SoapClient"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(1) {
        [0]=>
        array(1) {
          ["Client"]=>
          string(10) "TESTXMLB2C"
        }
      }
    }
  }
  ["previous":"Exception":private]=>
  NULL
  ["faultstring"]=>
  string(12) "Unauthorized"
  ["faultcode"]=>
  string(4) "HTTP"
};
对象(SoapFault)#2(9){
[“消息”:受保护]=>
字符串(12)“未经授权”
[“字符串”:“异常”:私有]=>
字符串(0)”
[“代码”:受保护]=>
int(0)
[“文件”:受保护]=>
字符串(34)“/home/laurentiu/teste/testswap.php”
[“线路”:受保护]=>
内部(5)
[“跟踪”:“异常”:私有]=>
阵列(3){
[0]=>
阵列(4){
[“函数”]=>
字符串(11)“\uuuu doRequest”
[“类”]=>
字符串(10)“SoapClient”
[“类型”]=>
字符串(2)“->”
[“args”]=>
阵列(5){
[0]=>
字符串(224)”
"
[1]=>
字符串(74)”https://ws.eurotours.at:443/accommodation/development/AccommodationService"
[2]=>
字符串(0)”
[3]=>
int(1)
[4]=>
int(0)
}
}
[1]=>
阵列(6){
[“文件”]=>
字符串(34)“/home/laurentiu/teste/testswap.php”
[“行”]=>
内部(5)
[“函数”]=>
字符串(6)“\uuuu调用”
[“类”]=>
字符串(10)“SoapClient”
[“类型”]=>
字符串(2)“->”
[“args”]=>
阵列(2){
[0]=>
字符串(12)“getLanguages”
[1]=>
阵列(1){
[0]=>
阵列(1){
[“客户端”]=>
字符串(10)“TESTXMLB2C”
}
}
}
}
[2]=>
阵列(6){
[“文件”]=>
字符串(34)“/home/laurentiu/teste/testswap.php”
[“行”]=>
内部(5)
[“函数”]=>
字符串(12)“getLanguages”
[“类”]=>
字符串(10)“SoapClient”
[“类型”]=>
字符串(2)“->”
[“args”]=>
阵列(1){
[0]=>
阵列(1){
[“客户端”]=>
字符串(10)“TESTXMLB2C”
}
}
}
}
[“先前”:“例外”:私有]=>
无效的
[“faultstring”]=>
字符串(12)“未经授权”
[“故障代码”]=>
字符串(4)“HTTP”
};

我现在不知道他们的服务,但正如注释所述,“HTTP未经授权”表示HTTP状态代码401,这意味着您需要在HTTP级别提供用户名和密码

联系该服务供应商并获取您的登录名(请参阅“登录名”),然后使用用户名和密码

使用
SoapClient
可以通过选项参数传递用户名和密码:

$soapClient = new SoapClient(
    "https://ws.eurotours.at/accommodation/development/AccommodationService?wsdl",
    array(
        'trace'    => true,
        'login'    => 'your username',
        'password' => 'your password',
    )
);
这将使用默认的身份验证方法
SOAP\u authentication\u BASIC
(请参阅)**SoapClient*还允许第二种身份验证方法,方法是将“
authentication
”选项设置为
SOAP\u authentication\u DIGEST
。如果服务器需要验证类型,此信息可能会很有用。但是,在您的情况下,根据响应头(
$soapClient->\uu getLastResponseHeaders()
),它是“
Basic
”:

HTTP/1.1 401未经授权
日期:2014年7月31日星期四09:35:27 GMT
服务器:Apache
X-Powered-By:Servlet/3.0 JSP/2.2(GlassFish服务器开放源码版3.1.2.2 Java/Oracle Corporation/1.7)
WWW-Authenticate:Basic realm=“webservice realm”
内容长度:1073
内容语言:
保持活动状态:超时=5,最大=100
连接:保持活动状态
内容类型:text/html;字符集=UTF-8

(由我重点介绍)

这里还有一个响应主体,SoapClient无法提供,但可以通过HTTP检查(代理)或自己执行HTTP请求来获得:

图像转录:HTTP状态401-

类型状态报告

信息

description此请求需要HTTP身份验证()

GlassFish服务器开源版本3.1.2.2


IIRC“HTTP Unauthorized”表示HTTP状态代码为401-请参阅等。您可以为SoapClient启用跟踪,以便在PHP HTTP流中进一步分析和/或回调。您还应该将错误报告/日志记录设置为最高级别。参见和(即使是simplexml,SoapClient也使用libxml,还有HTTP流,您可以在其中钩住相同的所有HTTP流也有默认上下文),但是我错了什么?我尝试只从那里调用测试api,我遵循PHP手册中的SoapClient和api中的函数,请更准确地说明我的错误。好的,这意味着开发测试需要用户和密码,好的,谢谢我会联系谢谢谢谢!!我花了三个小时才弄明白如何使用SOAP进行HTTP基本身份验证。对于像我这样的SOAP业余爱好者来说,php.net文档非常清晰。