2013-06-24 63 views
0

您好我似乎已經創建了一個使用asp.net的SOAP webservice,並使用PHP客戶端來測試它以獲取數據。並且它似乎爲獲取數據服務工作。從PHP客戶端發佈一個int到一個asp.net webservice始終是0

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客戶端:

當我嘗試發佈data.It看來,服務器總是收到價值0.Here是我的asp.net web服務代碼出現問題代碼:

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

我調試的服務,似乎DeleteBook方法得到的打擊,但問題是,在類標識符是已0

我在做什麼錯?

+0

你傳遞一個字符串,但端點期待一個整數。這可能是字符串被轉換爲0。但這只是一種猜測,並非真正的分析。 – hakre

+0

幹什麼categoryId在DeleteBook函數中顯示?這與你的Post請求在php中是一樣的嗎?如果相同,ExecuteNonQuyery會返回數據庫中的多少行效果。我的意思是,如果1條記錄有效,那麼將返回1.如果2條記錄有效,那麼將返回2.如果沒有行被執行,則返回0.有意義嗎?這是我的觀點。 –

回答

1

您好我設法actualy發送參數作爲array.This來解決這個問題是我做了什麼和它的工作:

if(isset($_POST["id"])){ 
     $id = $_POST["id"]; 
     $obj = array("categoryId" => $id); 
     $client->DeleteBook($obj); 
} 
0

您需要將字符串轉換爲整數。您可以在客戶端或服務器端執行此操作。

嘗試在您的PHP代碼中編寫(int) $id,這是否有訣竅?

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

我認爲,任何不能被解析到一個整數將爲0

+0

我已經嘗試過它,但它仍然發送爲0 – aleczandru

+0

在發送到客戶端之前,在$ _POST [「id」]上執行var轉儲。它顯示了什麼? – JOSEFtw

+0

它顯示int 7 – aleczandru

相關問題