我嘗試使用SOAP UI訪問我的webmethods,但它僅適用於第一個,我不明白爲什麼。如何使用SOAPUI訪問webservice的differents方法
我的Web服務方法:
[SoapHeader ("AuthenticationInfo", Required=true)]
[WebMethod(EnableSession = true)]
public string HelloWorld()
{
if (!(AuthenticationInfo.Username == "test" && AuthenticationInfo.Password == "test"))
{
throw new Exception();
// I put that in the aim to get an error, I'll modify this later
}
return "OK";
}
[SoapHeader("AuthenticationInfo", Required = true)]
[WebMethod]
public string Authenticate(string MethodName)
{
if (!(AuthenticationInfo.Username == "test" && AuthenticationInfo.Password == "test")
{
throw new Exception();
}
else
{
HelloWorld();
}
return "aaaa";
}
[WebMethod]
public int Calcul(int a, int b)
{
return a+b ;
}
當我把這個XML在SOAP UI:
<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:Header>
<AuthHeader xmlns="http://tempuri.org/">
<Username>test</Username>
<Password>test</Password>
<key>string</key>
</AuthHeader>
</soap:Header>
<soap:Body>
<HelloWorld xmlns="http://tempuri.org/" />
</soap:Body>
</soap:Envelope
它完美,我得到的HELLOWORD()方法返回。 但如果我把:
<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>
<Calcul xmlns="http://tempuri.org/">
<a>1</a>
<b>1</b>
</Calcul>
</soap:Body>
</soap:Envelope>
它再次調用的HelloWorld()方法。我在SOAP UI中使用的URL是:「http://localhost:62353/MyWebService.asmx」,所以我嘗試使用URL「http://localhost:62353/MyWebService.asmx/Calcul」上的最後一個XML嘗試一個新請求,並且出現錯誤。
你是我的想法嗎?我可能會錯誤地使用SOAP UI嗎?
要回復Kosala W: 我得到一個類似於我可以點擊方法的UI。 calcul方法只適用於這裏,因爲這種方法不需要SoapHeader。
當您在瀏覽器中運行您的Web服務項目時,您可以看到哪些方法?你可以點擊它們並查看模式? –
@KosalaW我運行Web服務項目時放置了一個屏幕圖像 – Julien698