2

我在 asp.net 中创建了一个 Web 服务,并在 iis 5.1 中发布。现在我想从 php 环境中调用这个 Web 服务。实际上,我的 Web 服务获取一个字符串作为参数并返回相同的字符串。但始终返回的字符串为空或 null。我无法将字符串值从 php 发送到 asp.net Web 服务...

这是我在 asp.net 中创建的网络服务

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 网络服务的 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

6

这段代码对我来说很好......

<?php

require 'nusoap/lib/nusoap.php';
$client = new nusoap_client('http://localhost/prs_point/prs_point.asmx?WSDL', 'WSDL');


$error = $client->getError();
if ($error) {
    die("client construction error: {$error}\n");
}

$param = array('inputData' => 'sample data');
$answer = $client->call('testAssignment', array('parameters' => $param), '', '', false, true);

$error = $client->getError();
if ($error) {
    print_r($client->response);
    print_r($client->getDebug());
    die();
 }

 print_r($answer);

 ?> 
于 2013-02-12T03:40:26.223 回答
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;,您还必须将参数传递给绑定在数组中的方法,而不是使用多个参数调用,请参阅本文以获取完整的例子。

高温高压

于 2013-02-11T12:14:27.847 回答