gpt4 book ai didi

java - PHP 如何使用 SOAP Web 服务?

转载 作者:行者123 更新时间:2023-12-02 08:04:42 28 4
gpt4 key购买 nike

我对网络服务的使用还很陌生。如果有人能在这方面帮助我,我将不胜感激。

在我的 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 调用返回的对象。

我的问题是:

  1. 在我的 PHP 代码中,如何使用 SOAP API 调用返回的 Java 类对象中的方法
    例如,函数 $remoteissue = $jirasoap->getIssue($a, $b) 将返回 RemoteIssue。基于此(http://docs.atlassian.com/rpc-jira-plugin/latest/com/atlassian/jira/rpc/soap/beans/RemoteIssue.html),有像getSummary这样的方法>、getKey 等。如何在我的代码中使用这些函数?
    根据我从互联网上找到的一些 PHP 示例,似乎每个人都在使用这样的东西:
    $remoteissue = $jirasoap->getIssue($token, "issuekey");
    $key = $remoteissue->key;
    他们没有使用对象的方法。
    引用这个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?我们需要使用 Web 浏览器来打开 WSDL URL?

谢谢。

最佳答案

这个问题已有一年多了,但为了与有同样问题并找到此页面的人分享知识并提供答案,以下是我的发现。

问题中提到的文档是 JiraSoapService 接口(interface)的概述。这是一个很好的引用,了解可以使用哪些参数调用哪些函数以及它们返回什么。

如果您对 Jira SoapClient 使用 Java,则会实现返回的对象,但如果您使用 PHP,则返回的对象不是本文档中所述的类型,并且不具有提到的任何方法。返回的对象是内部 PHP 类 stdClass 的实例,它是 undefined object 的占位符。了解返回内容的最佳方法是对从 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;

关于java - PHP 如何使用 SOAP Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8365408/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com