【问题标题】:Converting from C++, C#, Perl, or Java to PHP从 C++、C#、Perl 或 Java 转换为 PHP
【发布时间】:2012-05-01 18:35:07
【问题描述】:

如以下链接所示,NCBI(国家生物技术信息中心)为 C++、C#、Perl 和 Java 中的生物信息学提供了一个小而非常有用的 SOAP 客户端,但遗憾的是没有此 SOAP 客户端的 PHP 版本。

ftp://lucid.bic.nus.edu.sg/biomirrors/blast/web_services/

这是帮助我们对基因序列进行 BLAST 的 Perl SOAP 客户端的一部分:

    my $search_lite = SOAP::Data->value(
        SOAP::Data->name('options' => 
                         \SOAP::Data->value(
        SOAP::Data->name('Blast4-options-lite' =>
                         \SOAP::Data->name('task' => 'blastn'))
                         )))->uri(NCBI_XML_NAMESPACE);

    my $result = 
        $soap->call(SOAP::Data->name('Blast4-queue-search-request-lite')
                          ->uri(NCBI_XML_NAMESPACE)
                          => $search_lite);

我尝试将其转换为 PHP,但它不起作用。我也使用了这个指南:http://www.ncbi.nlm.nih.gov/books/NBK55699/

这是我的 PHP 代码:

try {
    $soapClient = new SoapClient($wsdlUrl);

    $result = $soapClient->SubmitSearchLite(array(
        //????
    ));
    echo $result;
}
catch {}

你能帮我解决它吗?

【问题讨论】:

  • 它说:“错误:SOAP-ERROR:编码:对象没有'选项'属性”
  • 为什么不设置选项?
  • OP:您需要在 SubmitSearchLite 中设置与第一个示例相同的信息。您缺少有关选项的信息
  • 谢谢你。谢谢 OptimusCrime。“选项”的值很复杂。不知道怎么转成PHP!

标签: c# java php c++ perl


【解决方案1】:

您是否考虑过使用PHP/Java Bridge?它应该允许您通过 Java 使用 Web 服务,然后将您拥有的任何信息发送到您的 PHP 应用程序:

PHP/Java Bridge 是基于 XML 的流式传输的实现 网络协议,可用于连接原生脚本引擎, 例如带有 Java 虚拟机的 PHP、Scheme 或 Python。它是 比通过 SOAP 的本地 RPC 快 50 倍,所需资源更少 在网络服务器端。它比直接更快更可靠 通过 Java Native Interface 进行通信,并且它不需要 从 PHP 或 PHP 调用 Java 过程的附加组件 来自 Java 的过程。

如果需要对 Web 服务进行任何额外更改,那么 Web 服务和您的 PHP 应用程序之间的这个额外层将证明自己很有用,因为您很可能只需要弄乱 Java 层,保持您的 PHP 代码完整。

【讨论】:

  • 谢谢。我去看看。
【解决方案2】:

您知道 PHP 有自己的 SOAP 客户端,对吧? http://www.php.net/manual/en/class.soapclient.php

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
相关资源
最近更新 更多