2011-12-03 7 views
0

私はWebサービスを使用することで非常に新しいです。誰かが私にこれを助けることができればと感謝します。PHP SOAP Webサービスをどのように消費するのですか?

私のPHPコードでは、別のサーバー(JIRA、java)からSOAP Webサービスを使用しようとしています。 JIRA SOAP APIはhereと表示されています。

$jirasoap = new SoapClient($jiraserver['url']); 
$token = $jirasoap->login($jiraserver['username'], $jiraserver['password']); 
$remoteissue = $jirasoap->getIssue($token, "issuekey"); 

私のコードでは、そのページに記載されている機能を呼び出すのに問題はないことがわかりました。しかし、私はAPI呼び出しによって返されたオブジェクトの使い方を知らない。

私の質問は以下のとおりです。私のPHPコードで

  1. 、私はSOAP API呼び出しによって返されたJavaクラスのオブジェクトでmethodsを使用することができますか?
    たとえば、関数$remoteissue = $jirasoap->getIssue($a, $b)RemoteIssueを返します。これに基づいて(http://docs.atlassian.com/rpc-jira-plugin/latest/com/atlassian/jira/rpc/soap/beans/RemoteIssue.html)、getSummarygetKeyなどのメソッドがあります。私のコードでこれらの機能を使用することはできますか?
    $remoteissue = $jirasoap->getIssue($token, "issuekey");
    $key = $remoteissue->key;
    彼らは、オブジェクトのメソッドを使用していない:私は、インターネットから見つかったいくつかのPHPの例に基づいて
    、誰もがこのようなものを使用しているようです。
    exampleを参照してください。誰かが他の言語でこれを行うことができるようです。それもPHPで行うことができますか?
    私が直面している問題は、アタッチメントのIDを取得しようとしていることです。ただし、このメソッドを使用してアタッチメントIDを取得することはできません:$attachmentid = $remoteattachment->id;私は$remoteattachment->getId()メソッドを使用しようとしています。

  2. PHPコードでは、SOAP API呼び出しを行い、返されたオブジェクトを受け取った後、そのオブジェクトで使用可能なデータフィールドをどのように知っていますか?例えば

    $remoteissue = $jirasoap->getIssue($token, "issuekey");
    $summary = $remoteissue->summary;
    がどのように我々は->summary$remoteissueで提供されています知っているのですか?
    この文書(http://docs.atlassian.com/rpc-jira-plugin/latest/com/atlassian/jira/rpc/soap/beans/RemoteIssue.html)を参照すると、私はそれを見ません任意のデータフィールドはRemoteIssueです。このオブジェクトからkeysummaryなどを得ることができることをどのように知っていますか?それが->summaryであり、->getsummaryではないことをどのように知っていますか? WSDL URLを開くには、Webブラウザを使用する必要がありますか?

ありがとう。

答えて

0

#2で参照したドキュメントは、Javaの実装であり、実際にはPHPのヘルプを提供していません。 WSDLを参照として使用すると、サービスで公開されていないオブジェクトやメソッドが通知され、それに応じてメソッド呼び出しを計画することができます。

の場合は、try ... catchを使用することを検討する必要がありますが、getIssue(...)と呼んでいたテクニックは問題ありません。

0

私はJira SOAPを使用しています。NETプロジェクトとIntelliSenseは、どのフィールドが返されたオブジェクトに対して利用可能であるかを暗示しました。

Visual Studioを使用している場合は、VS.Php for Visual StudioまたはPhp for Visual Studioのようなものを使用できます。

またはIntelliSenseのサポートでhereからIDEの1つを選択できます。

2

この質問は一歳以上ですが、この同じ質問をしてこのページを見つけた人に知識を共有し、回答を提供するために、ここに私の発見があります。

質問に記載されているドキュメントは、JiraSoapServiceインターフェイスの概要です。これは、どの引数がどの引数で返されるかによってどの関数を呼び出すことができるかを示す良いリファレンスです。

Jira SoapClientにJavaを使用する場合、返されるオブジェクトは実装されますが、PHPを使用する場合、返されるオブジェクトはこのドキュメントに記載されている型ではなく、前述のメソッドはありません。返されるオブジェクトは、内部PHPクラスstdClassのインスタンスで、未定義オブジェクトのプレースホルダです。返される内容を知る最も良い方法は、SoapCallsから返されたオブジェクトに対してvar_dump()を使用することです。

$jirasoap = new SoapClient($jiraserver['url']); 
$token = $jirasoap->login($jiraserver['username'], $jiraserver['password']); 
$remoteissue = $jirasoap->getIssue($token, "PROJ-1"); 

var_dump($remoteissue); 
/* -- You will get something like this --- 
object(stdClass)#2 (21) { 
    ["id"]=> string(3) "100" 
    ["affectsVersions"]=> array(0) { } 
    ["assignee"]=> string(4) "user" 
... 
    ["created"]=> string(24) "2012-12-13T09:27:49.934Z" 
... 
    ["description"]=> string(17) "issue description" 
.... 
    ["key"]=> string(6) "PROJ-1" 
    ["priority"]=> string(1) "3" 
    ["project"]=> string(4) "PROJ" 
    ["reporter"]=> string(4) "user" 
    ["resolution"]=> NULL 
    ["status"]=> string(1) "1" 
    ["summary"]=> string(15) "Project issue 1" 
    ["type"]=> string(1) "3" 
    ["updated"]=> string(24) "2013-01-21T16:11:43.073Z" 
    ["votes"]=> int(0) 
} 
*/ 

// You can access data like this: 
$jiraKey = $remoteissue->key; 
$jiraProject = $remoteissue->project; 
関連する問題