Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多个参数从PHP调用asp.net web服务_Php_Web Services_Asmx - Fatal编程技术网

使用多个参数从PHP调用asp.net web服务

使用多个参数从PHP调用asp.net web服务,php,web-services,asmx,Php,Web Services,Asmx,我正在使用php页面中使用SoapClient类的方法来调用asp.net站点中的web服务 下面是php代码 $client = new SoapClient("http://testurl/Test.asmx?WSDL"); $params = array( 'Param1' => 'Hello', 'Param2' => 'World!'); $result = $client->TestMethod($params)->Te

我正在使用php页面中使用SoapClient类的方法来调用asp.net站点中的web服务

下面是php代码

$client = new SoapClient("http://testurl/Test.asmx?WSDL");

$params = array( 'Param1'  => 'Hello', 
                'Param2' => 'World!');

$result = $client->TestMethod($params)->TestMethodResult;

echo $result;
问题是,我只得到了第一个参数(Param1)“Hello”,似乎Param2有问题。 下面是asp.net方法

[WebMethod]
public string TestMethod(string Param1, string Param2) 
{
    return Param1 + " " +  Param2; 
}
我错过了什么才能得到
你好,世界在响应中?

尝试以下操作:

$client = new SoapClient("http://testurl/Test.asmx?WSDL");
$params->Param1 = 'Hello';
$params->Param2 = 'World!';    
$result = $client->TestMethod($params)->TestMethodResult;
**********index.php******************
*******************WebServiceFinal.asmx?WSDL**************************
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Services;
/// 
///WebServiceFinal的摘要说明
/// 
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
//要允许使用ASP.NET AJAX从脚本调用此Web服务,请取消注释以下行。
[System.Web.Script.Services.ScriptService]
公共类WebServiceFinal:System.Web.Services.WebService{
公共WebServiceFinal(){
//如果使用设计的组件,请取消注释以下行
//初始化组件();
}
[网络方法]
公共字符串HelloWorld(){
返回“你好世界”;
}
[网络方法]
公共字符串测试方法(字符串参数1,字符串参数2)
{
返回Param1+“”+Param2;
}
[网络方法]
公共字符串ShowNameFamely(字符串参数1,字符串参数2)
{
返回Param1+“”+Param2;
}
}

我在谷歌上搜索多参数调用。 所有的线程没有告诉下面的内容。 当php调用.asmx web服务时,参数的传递必须与以下web服务中使用的变量相匹配:

public string XYZ(string p, string q) 
web服务调用必须类似于:

$params = array( "p"  => $name1,    "q" => $name2 );

p、 q对必须在php调用中命名和澄清

一个简单的问题。我的代码不起作用的原因是b/c它被作为一个数组类型的参数传递?你能告诉我TestMethodResult在哪里吗?什么是$params对象?如何设置它?$result2=$client->ShowNameFamely($params)->ShowNameFamelyResult;
$params = array( "p"  => $name1,    "q" => $name2 );