C# Webservice和HttpWebRequest
我有一个Web服务处于活动状态的网站(prestashop) 此站点需要身份验证 我使用以下代码:C# Webservice和HttpWebRequest,c#,asp.net,web-services,httpwebrequest,C#,Asp.net,Web Services,Httpwebrequest,我有一个Web服务处于活动状态的网站(prestashop) 此站点需要身份验证 我使用以下代码: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; request.UserAgent = "Mozilla/5.0 (Window
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36";
request.Method = "GET";
request.Credentials = new NetworkCredential("key", "");
request.PreAuthenticate = true;
//request.Connection
request.Host = "localhost";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
String R = reader.ReadToEnd();
代码还可以,但我的问题是Web服务有一个登录表单
实际上,HttpWebRequest对象发送两个请求:
第一个答案未授权,而第二个答案状态为ok
我用了提琴网除虫器。
我为我的英语道歉。如果表单是使用GET方法提交的,则必须在url查询字符串中传递表单参数,例如
http://url?username={0}&pass={1}
。如果是POST方法,则必须将表单信息传递到http正文请求中。这方面的例子很多。此外,您还必须使用CookieContainer处理Cookie。在第一个请求中初始化容器
request.CookieContainer = new CookieContainer();
当请求以ok状态返回时,Cookie将处于请求中。Cookie
是CookieCollection实例。稍后,为了进一步请求,您必须传递此cookies才能检索正确的数据
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(userCookies);
希望有帮助 仅供参考,您的
WebResponse
、Stream
和StreamReader
应位于中,并使用块确保它们已被清除。