繁体   English   中英

Web服务和HttpWebRequest

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM