首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Vanguard中的令牌访问USI Webservice时返回错误

使用Vanguard中的令牌访问USI Webservice时返回错误
EN

Stack Overflow用户
提问于 2016-12-21 13:12:30
回答 2查看 494关注 0票数 0

因此,我试图将我们的SMS (学生管理系统)连接到政府服务或网站。该过程需要来自Vanguard的身份验证令牌。成功地,我能够获得令牌...但是由于缺少PHP文档和示例代码,我在与上述服务进行通信时遇到了问题。我想知道是我的代码导致了问题,还是我的调用在与see服务的接口上发生了冲突:请参阅以下代码:

代码语言:javascript
复制
    <?php
require_once 'VanguardClient.php';
$endpoint   = 'https://3pt.portal.usi.gov.au/Service/v2/UsiService.svc';

function get_sts($endpoint){
    $test = true;

    $auskey_path = 'Keystore.xml';
    $auskey_password = 'Password1!';

    $v = new VanguardClient($test);
    $v->loadAuskey($auskey_path, $auskey_password);

    try {
        return $v->requestToken($endpoint);
    } catch (SoapFault  $e) {
        echo "Error1:";     
        echo $e;
    }
}


//get token from Vanguard
$token      = get_sts($endpoint);


//create soap client
try{
    $wsdl   = 'https://3pt.portal.usi.gov.au/service/V2/UsiService.wsdl';
    $client = new SoapClient($wsdl, 
        array(
            'trace' =>1,
            //'soap_version' => SOAP_1_2, 
            'keep_alive' => false,
            //'connection_timeout' => 500000,           
            'cache_wsdl' => WSDL_CACHE_NONE

        )
    );
} catch (SoapFault  $e) {   
    echo "SoapClient Error:<br />";     
    var_dump($e);
}

try {       
    $result=$client->__setSoapHeaders( $token );
} catch (SoapFault  $e) {   
    echo "__setSoapHeaders:";       
    var_dump($e);
}


$data = array(  
    'OrgCode' => '970003',
    'USI' => 'U6Q8JN6UD9',
    'FirstName' => 'Myrna',
    'FamilyName' => 'Macknight',
    'DateOfBirth' => '1971-04-19'
);  


try{
    $response=$client->__soapCall('VerifyUSI',$data);   

} catch (SoapFault  $e) {   
    echo "__soapCall Error:<br />";     
    echo $e;
}


var_dump($response);

我在浏览器上看到的结果是:

应用程序异常: HTTP无法处理该消息,因为内容类型‘SoapFault/xml;charset=utf-8’不是预期的类型‘应用程序/soap+xml;字符集=utf-8’。在/var/www/html/usitest/example1.php:73堆栈跟踪:#0内部函数:主数组) #2 { SoapClient->__doRequest('__soapCall('VerifyUSI',}空

提前感谢各位!

EN

回答 2

Stack Overflow用户

发布于 2017-03-17 06:14:40

您的内容类型可能是由SOAP版本引起的。

尝试将SOAP版本设置为1.2:

代码语言:javascript
复制
'soap_version' => SOAP_1_2

请参阅SoapClient connection to SoapServer

然而,我认为您的代码中还存在其他问题--尤其是先锋令牌。

票数 0
EN

Stack Overflow用户

发布于 2019-03-18 08:30:17

我们设法解决了这个问题,然而它需要许多类,模板,外部包和几个月的工作才能解决,而不是我们可以在线发布的东西。然而,在你的情况下,我建议你做一些事情来解决它。

  • 这不像普通的SOAP服务那样工作。将XML模板用于各种过程的所有步骤(先锋、USI、这些部分的组件等)。
  • 逆向工程.Net示例代码,我们在

代码中遇到了主要问题。

  • 我们通过使用代理并捕获发送的内容和使用composer来管理安全依赖关系,取得了重大进展。
  • 有大约10个与安全性相关的部分需要进行逆向工程。别忘了对内容进行规范化以获得正确的加密。
  • 对请求使用Guzzle,它更容易
  • PHP示例中的大多数东西都是错误的,或者至少不可能被跟踪和调试来修复。最后,我们看不到一种可行的方法。

预计至少要花几个星期的时间,你需要了解很多关于安全性、哈希和ssl证书的知识。

很抱歉,我不能给你一个完整的工作解决方案,但了解上面的这些步骤肯定会对我们有所帮助,所以我希望它们能帮助你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41255547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档