0

嗨,我似乎已经使用 asp.net 创建了一个 SOAP 网络服务,并使用 PHP 客户端对其进行了测试以获取数据。而且它似乎是为了获取数据服务工作。

当我尝试发布数据时出现问题。似乎服务器总是收到值 0。这是我的 asp.net Web 服务代码:

public void DeleteBook(int categoryId)
    {
        using (var conn = new OdbcConnection(connectionString))
        {
            conn.Open();
            using (var command = new OdbcCommand())
            {
                command.Parameters.Add(new OdbcParameter("@CategoryId", categoryId));
                command.CommandText = "DELETE FROM Books WHERE CategoryId = @CategoryId";
                command.ExecuteNonQuery();
            }
        }
    }

这是我的 PHP Soap 客户端代码:

  $client = new SoapClient($url);
  if(isset($_POST["id"])){
            $id = $_POST["id"];
            echo $id;
            $client->DeleteBook($id);
   }

我调试了服务,似乎 DeleteBook 方法得到了命中,但问题是 categoryId 为 0。

我究竟做错了什么?

4

2 回答 2

1

嗨,我设法通过实际将参数作为数组发送来解决这个问题。这就是我所做的并且它有效:

if(isset($_POST["id"])){
        $id = $_POST["id"];
        $obj = array("categoryId" => $id);
        $client->DeleteBook($obj);
}
于 2013-06-24T15:09:21.500 回答
0

您需要将字符串转换为整数。您可以在客户端或服务器端执行此操作。

尝试编写(int) $id您的 PHP 代码,这样可以解决问题吗?

 $client = new SoapClient($url);
  if(isset($_POST["id"])){
        $id = (int) $_POST["id"];
        echo $id;
        $client->DeleteBook($id);
  }

我认为任何无法解析为整数的东西都是0。

于 2013-06-24T14:31:45.797 回答