不幸的是,我以前从未使用过SOAP,所以我希望我无论如何都能很好地表达自己。
我有以下 SOAP 请求(用于在 HPSM 中创建票证(:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://schemas.hp.com/SM/7" xmlns:com="http://schemas.hp.com/SM/7/Common" xmlns:xm="http://www.w3.org/2005/05/xmlmime">
<soapenv:Header/>
<soapenv:Body>
<ns:SubmitIntApiIncidentRequest attachmentInfo="?" attachmentData="?" ignoreEmptyElements="true" updateconstraint="-1">
<ns:model query="?">
<ns:keys query="?" updatecounter="?">
<!--Optional:-->
<ns:id type="Decimal" mandatory="?" readonly="?">?</ns:id>
</ns:keys>
<ns:instance query="?" uniquequery="?" recordid="?" updatecounter="?">
<!--Optional:-->
<ns:registrationId type="String" mandatory="?" readonly="0">HPSM Registration ID</ns:registrationId>
<!--Optional:-->
<ns:contactId type="String" mandatory="?" readonly="?">???</ns:contactId>
<!--Optional:-->
<ns:affectedUserId type="String" mandatory="?" readonly="?">User ID</ns:affectedUserId>
<!--Optional:-->
<ns:serviceId type="String" mandatory="?" readonly="?">?</ns:serviceId>
<!--Optional:-->
<ns:affectedCiId type="String" mandatory="?" readonly="?">?</ns:affectedCiId>
<!--Optional:-->
<ns:priority type="String" mandatory="?" readonly="?">?</ns:priority>
<!--Optional:-->
<ns:title type="String" mandatory="?" readonly="?">?</ns:title>
<!--Optional:-->
<ns:description type="String" mandatory="?" readonly="?">description</ns:description>
<!--Optional:-->
<ns:returnCode type="String" mandatory="?" readonly="?">?</ns:returnCode>
<!--Optional:-->
<ns:returnMessage type="String" mandatory="?" readonly="?">?</ns:returnMessage>
<!--Optional:-->
<ns:returnTicketId type="String" mandatory="?" readonly="?">?</ns:returnTicketId>
<!--Optional:-->
<ns:submittedBy type="String" mandatory="?" readonly="?">?</ns:submittedBy>
<!--Optional:-->
<ns:submitterGroup type="String" mandatory="?" readonly="?">?</ns:submitterGroup>
<!--Optional:-->
<ns:assignmentGroup type="String" mandatory="?" readonly="?">?</ns:assignmentGroup>
<!--Optional:-->
<ns:externalReferenceId type="String" mandatory="?" readonly="?">?</ns:externalReferenceId>
<!--Optional:-->
<ns:category type="String" mandatory="?" readonly="?">?</ns:category>
<!--Optional:-->
<ns:resolveImmediately type="Boolean" mandatory="?" readonly="?">?</ns:resolveImmediately>
<!--Optional:-->
<ns:solutionCode type="String" mandatory="?" readonly="?">?</ns:solutionCode>
<!--Optional:-->
<ns:solution type="String" mandatory="?" readonly="?">?</ns:solution>
<!--Optional:-->
<ns:contactInfo type="String" mandatory="?" readonly="?">?</ns:contactInfo>
<!--Optional:-->
<ns:incidentType type="String" mandatory="?" readonly="?">?</ns:incidentType>
<!--Optional:-->
<ns:attachments>
<!--Zero or more repetitions:-->
<com:attachment xm:contentType="application/?" href="?" contentId="?" action="?" name="?" type="?" len="?" charset="?" upload.by="?" upload.date="?" attachmentType="?">cid:933455187673</com:attachment>
</ns:attachments>
</ns:instance>
<!--Optional:-->
<ns:messages>
<!--Zero or more repetitions:-->
<com:message type="String" mandatory="?" readonly="?" severity="?" module="?">?</com:message>
</ns:messages>
</ns:model>
</ns:SubmitIntApiIncidentRequest>
</soapenv:Body>
</soapenv:Envelope>
到目前为止,我的 soapcall.php 文件中有以下代码:
<?php
$wsdl ='asdf?wsdl';
$client = new SoapClient($wsdl, array('login' => "user", 'password' => "pw"));
$request = array(
'SubmitIntApiIncident'=>(array(
'model' => '',
'registrationID' => 'registrationid',
'contactId' => 'me',
'affectedUserId' => 'affuser',
'serviceId' => 'serviceid',
'affectedCiId' => '',
'priority' => '4',
'title' => 'Test Title',
'description' => 'description',
'submittedBy' => 'me',
'assignmentGroup' => 'assignment group',
'externalReferenceId' => '',
'category' => 'incident',
'resolveImmediately' => ''
)));
$response = $client->__soapCall("SubmitIntApiIncident", $request);
var_dump($response);
?>
这根本不起作用 - 现在我没有收到任何错误消息,只有一个空白页。但是每次我更改代码中的某些内容时,都会出现另一条错误消息。所以我甚至不知道我是否走在正确的轨道上,或者我尝试的一切只会让事情变得更糟。
如果您能告诉我我的代码中是否有任何大错误,或者我如何使用 php 文件成功提交票证,我将不胜感激。
使用 __soapCall 方法是好方法之一。也可以直接使用操作名称作为方法,如$client->SubmitIntApiIncident()
。
您应该明确使用 WSDL 到 php 生成器,以避免浪费时间搜索问题。
使用WSDL来php生成器的优点有很多:
- 构造
- 请求而不想知道如何构造它,只需使用一个好的 IDE 让自动完成显示要传递的数据
- 使用处理干净错误和响应的生成类的方法发送请求
- 使用干净的对象获取响应
- 从生成的类获取帮助以定位错误
- 停止怀疑请求的格式是否正确
- 。
尝试包生成器项目