0
我有這段代碼試圖發送一個請求到肥皂服務器,我是新來肥皂,所以我不知道如果我使用的術語是否正確,請糾正我,我錯了。SOAP服務請求
基本上我通過SOAP請求
這裏訪問名爲getUserDomain Web服務方法是代碼:
public void CallWebService()
{
var _url = "https://....com/QcXmlWebService/QcXmlWebService.asmx?wsdl";
var _action = "https://....com/QcXmlWebService/QcXmlWebService.asmx?op=GetUserDomains";
XmlDocument soapEnvelopeXml = CreateSoapEnvelope();
HttpWebRequest webRequest = CreateWebRequest(_url, _action);
InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml, webRequest);
webRequest.BeginGetResponse(null, null);
// begin async call to web request.
IAsyncResult asyncResult = webRequest.BeginGetResponse(null, null);
// suspend this thread until call is complete. You might want to
// do something usefull here like update your UI.
asyncResult.AsyncWaitHandle.WaitOne();
// get the response from the completed web request.
string soapResult;
using (WebResponse webResponse = webRequest.EndGetResponse(asyncResult))
{
using (StreamReader rd = new StreamReader(webResponse.GetResponseStream()))
{
soapResult = rd.ReadToEnd();
}
Console.Write(soapResult);
}
}
private HttpWebRequest CreateWebRequest(string url, string action)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Headers.Add("SOAPAction", action);
webRequest.ContentType = "text/xml;charset=\"utf-8\"";
webRequest.Accept = "text/xml";
webRequest.Method = "POST";
return webRequest;
}
private XmlDocument CreateSoapEnvelope()
{
XmlDocument soapEnvelop = new XmlDocument();
string oRequest = "";
oRequest = @"<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"" xmlns:qcx=""http://smething.com/QCXML"">";
oRequest = oRequest + "<soap:Header/>";
oRequest = oRequest + "<soap:Body>";
oRequest = oRequest + "<qcx:GetUserDomains>";
oRequest = oRequest + "<qcx:inputXml><![CDATA[";
oRequest = oRequest + "<GetUserDomains>";
oRequest = oRequest + "<login>";
oRequest = oRequest + "<domain_name>MBB_BTS</domain_name>";
oRequest = oRequest + "<project_name>WCDMA_BTS_IV</project_name>";
oRequest = oRequest + "<user_name>user</user_name>";
oRequest = oRequest + "<password>pass</password>";
oRequest = oRequest + "</login>";
oRequest = oRequest + "</GetUserDomains>";
oRequest = oRequest + " ]]>";
oRequest = oRequest + "</qcx:inputXml>";
oRequest = oRequest + "</qcx:GetUserDomains>";
oRequest = oRequest + "</soap:Body>";
oRequest = oRequest + "</soap:Envelope>";
soapEnvelop.LoadXml(oRequest);
return soapEnvelop;
}
private void InsertSoapEnvelopeIntoWebRequest(XmlDocument soapEnvelopeXml, HttpWebRequest webRequest)
{
using (Stream stream = webRequest.GetRequestStream())
{
soapEnvelopeXml.Save(stream);
}
}
此代碼我已經在堆棧溢出某處見過作爲一個答案,但我不能」噸得到它的工作......我得到的錯誤是拋出異常System.net.webexception。遠程服務器返回錯誤:(500)內部服務器
不要通過字符串連接構建XML。是否有理由不只是使用「添加服務參考」? –