2009-09-22 82 views
1

我正在開發一個iPhone應用程序,它將SOAP消息發送到.NET Webservice以調用多個WebMethods。這些方法從數據庫中獲取數據並在SOAP消息中將其返回給iPhone。Webmethod參數保留null

當我發送SOAP消息調用沒有任何參數的WebMethod時,它工作得很好。

但是,當我通過消息傳遞參數時,webMethod參數在Visual Studio調試器中保持爲空。它看起來像WebMethod沒有收到任何東西。

我使用網絡嗅探器來查看傳入數據包,並注意到SOAP消息到達時可以使用。所以它必須是web服務端出現問題的地方。

這裏是一些代碼:

的的WebMethod:

public class ZDFMobielWebservice : System.Web.Services.WebService 
{ 

    [WebMethod] 
    public string getVerzekerde(string bsn) 
    {   
     string result = bsn; 
     ZDFKoppeling koppeling = new ZDFKoppeling(); 
     result = koppeling.getData(Convert.ToInt32(bsn)); 
     return result; 
    } 
} 

創建的SOAP消息中的功能:

-(IBAction)buttonClick:(id)sender 
{ 
    recordResults = FALSE; 

    NSString *soapMessage = [NSString stringWithFormat: 
    @"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 
    "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" 
    "<soap:Body>\n" 
    "<getVerzekerde xmlns=\"http:/meijberg.topicus.local/zdfmobiel\">\n" 
    "<bsn>%@</bsn>\n" 
    "</getVerzekerde>\n"  
    "</soap:Body>\n" 
    "</soap:Envelope>\n", bsnInput.text 
    ]; 
    NSLog(soapMessage); 

    NSURL *url = [NSURL URLWithString:@"http://meijberg.topicus.local/ZDFMobielWebservice.asmx"]; 
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 
    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]]; 

    [theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
    [theRequest addValue: @"http://meijberg.topicus.local/zdfmobiel/getVerzekerde" forHTTPHeaderField:@"SOAPAction"]; 
    [theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 
    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

    if(theConnection) 
    { 
    webData = [[NSMutableData data] retain]; 
    } 
    else 
    { 
    NSLog(@"theConnection is NULL"); 
    } 

    //[nameInput resignFirstResponder]; 

}

而且這裏的SOAP消息:

<?xml version="1.0" encoding="utf-8"?> 
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <getVerzekerde xmlns="http:/meijberg.topicus.local/zdfmobiel"> 
     <bsn>999999999</bsn> 
     </getVerzekerde> 
    </soap:Body> 
    </soap:Envelope> 

任何人知道問題可能是什麼?

編輯:當我從網頁服務器自動生成的網頁調用webmethod時效果很好。然後參數填入我輸入的值。

回答

1

經過多次網絡搜索,我找到了答案。

我使用工具SoapUI(http://www.soapui.org/)發送一些肥皂消息到我的web服務。 SoapUI顯示了它發送給Web服務的XML消息,因此我發現iPhone應用程序中的消息語法不正確。

相反的:

NSString *soapMessage = [NSString stringWithFormat: 
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" 
"<soap:Body>\n" 
"<getVerzekerde xmlns=\"http:/meijberg.topicus.local/zdfmobiel\">\n" 
"<bsn>%@</bsn>\n" 
"</getVerzekerde>\n"  
"</soap:Body>\n" 
"</soap:Envelope>\n", bsnInput.text 
    ]; 

它是這樣的:

NSString *soapMessage = [NSString stringWithFormat: 
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:zdf=\"http://meijberg.topicus.local/zdfmobiel\">\n" 
"<soapenv:Body>\n" 
"<zdf:getVerzekerde>\n" 
"<zdf:bsn>%@</zdf:bsn>\n" 
"</zdf:getVerzekerde>\n" 
"</soapenv:Body>\n" 
"</soapenv:Envelope>\n", bsnInput.text 
]; 

不過,我真的不明白爲什麼這個工程..也許它有事情做與半所有標籤中的冒號關鍵字。有人可以對此作出解釋嗎?

+0

我有同樣的問題,但在我sceraio來電者是一個Windows應用程序創建soap xml並通過MSXML發送xml,你是否相信在我的情況下使用上述關鍵字可能會糾正問題? – Zich 2017-03-01 13:33:50

0

在這一行:

<getVerzekerde xmlns=\"http:/meijberg.topicus.local/zdfmobiel\"> 

你需要把一個斜線後的地址(zdfmobiel後):

<getVerzekerde xmlns=\"http:/meijberg.topicus.local/zdfmobiel/\"> 
+0

你可以發佈這個作爲編輯,從而讓答案變得完整和自給自足嗎? – Shreeni 2012-12-05 02:11:43