[英]Webservice and 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 (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对象发送了两个请求:第一个答案未经授权,而第二个答案还可以。
我使用了提琴手网络调试器。 我为我的英语道歉。
如果表单是使用GET方法提交的,则必须在url查询字符串中传递表单参数,例如http://url?username={0}&pass={1}
。 如果是POST方法,则必须将表单信息传递到http正文请求中。 在stackoverflow中有很多示例。 同样,您必须处理使用CookieContainer实现的cookie。 在第一个请求中初始化容器
request.CookieContainer = new CookieContainer();
当OK状态请求复出饼干将在request.Cookies
女巫是CookieCollection实例。 稍后,如果需要进一步的请求,则必须传递此cookie才能检索正确的数据。
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(userCookies);
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.