我正在與下面的代碼Get請求:HttpWebRequest的在C#
TheRequest = (HttpWebRequest)WebRequest.Create(aURL);
TheRequest.Method = "GET";
TheRequest.CookieContainer = TheCookies;
TheRequest.UserAgent = GetUserAgent();
TheRequest.KeepAlive = false;
TheRequest.Timeout = 20000;
TheRequest.ReadWriteTimeout = 20000;
TheRequest.AllowAutoRedirect = true;
TheRequest.Headers.Add("Accept-Language", "en-us");
TheResponse = (HttpWebResponse)TheRequest.GetResponse();
TheResponseString = new StreamReader(TheResponse.GetResponseStream(), Encoding.ASCII).ReadToEnd();
在此之後我把餅乾如下:
string theCookieHeader = TheResponse.Headers[HttpResponseHeader.SetCookie];
然後我處理字符串是正確的cookie格式並將其放入cookie容器中以在下次POST請求中提供。從響應字符串(TheResponseString)我創建適當的發佈數據和來自cookiecontainer的cookie。
我對POST請求的代碼如下:
TheRequest = (HttpWebRequest)WebRequest.Create(aURL);
TheRequest.Method = "POST";
TheRequest.CookieContainer = TheCookies;
TheRequest.UserAgent = GetUserAgent();
TheRequest.KeepAlive = false;
TheRequest.Timeout = 20000;
TheRequest.ReadWriteTimeout = 20000;
TheRequest.AllowAutoRedirect = true;
TheRequest.ContentType = "application/x-www-form-urlencoded";
TheRequest.Headers.Add("Accept-Language", "en-us");
byte[] bytes = Encoding.ASCII.GetBytes(aPostDataString);
TheRequest.ContentLength = bytes.Length;
Stream oStreamOut = TheRequest.GetRequestStream();
oStreamOut.Write(bytes,0,bytes.Length);
oStreamOut.Close();
TheResponse = (HttpWebResponse)TheRequest.GetResponse();
TheResponseString = new StreamReader(TheResponse.GetResponseStream(), Encoding.ASCII).ReadToEnd();
現在的問題是我有兩個網站,他們是合作伙伴的網站,他們完全有相同的東西(這似乎但是如果你懷疑任何東西,那麼請告訴我),但對於一個網站,它工作正常,而對於其他網站,它給出了網站錯誤頁面的響應字符串。
請幫我看看診斷問題。
你需要爲第二個提供不同的cookie,它發生在我身上!即使是相同的網站,但不同的子域名,有時你需要提供不同的cookie –
那麼,如果你得到一個錯誤,你應該看看網站上的日誌失敗...你應該能夠看到*爲什麼*你得到一個錯誤。 –
@JonSkeet我想他試圖連接到無法訪問的網站,btw關於李請求:)我已經安裝了SkeetNotifier,它太可愛了! –