Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Webservice和HttpWebRequest_C#_Asp.net_Web Services_Httpwebrequest - Fatal编程技术网

C# Webservice和HttpWebRequest

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

我有一个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 (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
应位于
中,并使用
块确保它们已被清除。