2

asp.netで作成され、iis 5.1で公開されたWebサービスが1つあります。このWebサービスをphp環境から呼び出したいと思います。実際、私の Web サービスは 1 つの文字列をパラメーターとして取得し、同じ文字列を返します。

これはasp.netで作成された私のWebサービスです

namespace PRS_WS
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class prs_point : System.Web.Services.WebService
    {
        [WebMethod]
        public string testAssignment(string inputData)
        {
            return inputData;           
        }
    }
}

そして、これは上記の asp.net Web サービスを呼び出すための私の php コードです...

<?php
       require_once('nusoap/lib/nusoap.php');
       $wsdl="http://localhost/prs_point/prs_point.asmx?WSDL";
       $str1="";
       $str1="Hello from php";

        $client = new soapclient($wsdl,'wsdl');
        $result=$client->call('testAssignment',$str1);

         foreach($result as $key => $value)
        {
              echo "<br/>Response ::::: $value";
         }
?>  

PHP側とasp.net側のどちらで変更が必要かわかりません...この問題を解決するために私を導いてください...

4

3 に答える 3

0

これを試して。

$client = new SoapClient("http://localhost/prs_point/prs_point.asmx?WSDL");
$params->inputData= 'Hello';

$result = $client->testAssignment($params)->testAssignmentResult;

echo $result;
于 2013-02-11T12:11:01.620 に答える
0

サービスを WCF で定義したほうがよいでしょう。これにより、生成された SOAP をより細かく制御できます。また、PHP についてはよくわかりませんが、過去に ASMX Web サービスを Adob​​e Flex と連携させるのに問題があったため、統合はできませんでした。まだSOAPプロトコルを使用しているにもかかわらず、常に見栄えがするわけではありません. それに加えて、あなたのサービスは問題ないように見えますが、これらの行は必要ないと思います:

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]

PHP 側から呼び出すことができるはずです$result = $client -> testAssignment( $str1 );が (忘れてしまいました) 結果の値にアクセスする必要があるかもしれませ$result = $client -> testAssignment( $str1 ) -> testAssignmentResult;ん。また、複数の引数で呼び出す代わりに、配列にバンドルされたメソッドにパラメーターを渡す必要があります。詳細については、この記事を参照してください。完全な例。

HTH

于 2013-02-11T12:14:27.847 に答える