I have a web service that I can only hit if I’m logged into the website that the web service is on. I need to test the service remotely. So I’ve written some code to create a fake session that is logged into the site in another browser. Then I made the HTTP Web Request and I’m attempting to set a cookie that contains the ASP.NET session ID of that logged in user. But the web service doesn’t detect that the web request is a logged in user or session. What do I need to give the web service to convince it this is a valid session?
// used on each read operation byte[] buf = new byte[8192]; CookieContainer myContainer = new CookieContainer(); string sessionID = SessionID; myContainer.Add(new Cookie('ASP.NET_SessionId', sessionID, '/', WebsiteUrl)); // prepare the web page we will be asking for HttpWebRequest request = (HttpWebRequest) WebRequest.Create(CreateWebserviceUrl('doneScreenScore')); request.ContentType = 'text/xml; charset=utf-8'; request.Method = 'POST'; request.Accept = 'text/xml'; request.Headers.Add('SOAPAction', 'http://detectent.net/doneScreenScore'); request.CookieContainer = myContainer; Stream s = request.GetRequestStream(); string soaprequest = ''; soaprequest += '<?xml version=\'1.0\' encoding=\'utf-8\'?>'; soaprequest += '<soap12:Envelope xmlns:xsi=\'http://www.w3.org/2001/XMLSchema-instance\' xmlns:xsd=\'http://www.w3.org/2001/XMLSchema\' xmlns:soap12=\'http://www.w3.org/2003/05/soap-envelope\'>'; soaprequest += ' <soap12:Body>'; soaprequest += ' <doneScreenScore xmlns=\'http://detectent.net/\'>'; soaprequest += ' <input1>string</input1>'; soaprequest += '<input2>string</input2>'; soaprequest += '<input3>string</input3>'; soaprequest += '<input4>string</input4>'; soaprequest += '</doneScreenScore>'; soaprequest += '</soap12:Body>'; soaprequest += '</soap12:Envelope>'; s.Write(System.Text.Encoding.ASCII.GetBytes(soaprequest), 0, soaprequest.Length); s.Close(); // execute the request HttpWebResponse response = (HttpWebResponse) request.GetResponse(); // we will read data via the response stream Stream resStream = response.GetResponseStream(); string responseFromWebServiceCall = ReadResponseStream(resStream);
I think that you can do something with the credentials… I am doing this for a webservice…
rpt.Credentials = new System.Net.NetworkCredential(UserName, Password, Domain);