我正在開發一個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時效果很好。然後參數填入我輸入的值。
我有同樣的問題,但在我sceraio來電者是一個Windows應用程序創建soap xml並通過MSXML發送xml,你是否相信在我的情況下使用上述關鍵字可能會糾正問題? – Zich 2017-03-01 13:33:50