下面是這種情況。我寫的代碼使用檢索的cookies和同一個數字證書使用數字證書從一個安全的網址,以獲取餅乾,以進而POST數據返回到另一個URL。一開始工作和餅乾取出,在POST回來與我安裝小提琴手,看看發生了什麼錯誤500 ... POST看起來很好...餅乾都存在。我在fiddler中使用了該功能,允許通過拖放創建請求。 POST從C#代碼錄製的完全相同的POST記錄在fiddler中,它的工作原理!的HttpWebRequest到HTTPS服務器提琴手而不是從Visual Studio的工作
什麼是小提琴手這樣做,Visual Studio是不是?它必須做的東西,如果小提琴手能後的數據,但Visual Studio中返回一個錯誤500.這是下面的代碼:
X509Certificate cert = new X509Certificate("mycert.pfx", "certpassword");
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://servertoGETcookies/fileUpload.html");
req.CookieContainer = new CookieContainer();
req.Method = "GET";
req.ClientCertificates.Add(cert);
HttpWebResponse Response = (HttpWebResponse)req.GetResponse();
CookieCollection ck = req.CookieContainer.GetCookies(req.RequestUri);
string strcookie = ck[0].Value;
string strcookie2 = ck[1].Value;
Response.Close();
req = (HttpWebRequest)WebRequest.Create("https://servertoPOSTdatawithcookies/main");
req.CookieContainer = new CookieContainer();
Cookie auth = new Cookie("_wl_authcookie_", strcookie2);
Cookie jsess = new Cookie("JSESSIONID", strcookie);
auth.Domain = "server";
jsess.Domain = "server";
req.CookieContainer.Add(auth);
req.CookieContainer.Add(jsess);
req.ClientCertificates.Add(cert);
req.Method = "POST";
Byte[] data = ReadByteArrayFromFile("filewithdatatoPOST.txt");
req.ContentLength = data.Length;
Stream myStream = req.GetRequestStream();
myStream.Write(data, 0, data.Length);
myStream.Close();
HttpWebResponse Response2 = (HttpWebResponse)req.GetResponse();
Stream strm = Response2.GetResponseStream();
StreamReader sr2 = new StreamReader(strm);
Response2.Close();
謝謝,但現在還有另外一個問題。來自提琴手的帖子迴應了預期結果(即提交了x)。從Visual Studio發佈的帖子好像沒有帖子(即和我沒有發佈任何內容一樣)。 – Chad 2011-04-15 17:38:51
文件中的文本,我發帖是想充當如果我按下按鈕來上傳數據文件:'code' - 時間戳內容處置:表格數據; name =「action」FILEUPLOAD --timestamp Content-Disposition:form-data; NAME = 「browseFile」;文件名= 「fileuploading.txt」 的Content-Type:text/plain的儀表日報*** 12345,123,單位,04 /2011分之111,123.000 2,123.000 – Chad 2011-04-15 17:39:51
對不起......試圖爲有用的,但我標記在這裏沒有足夠的聲譽。 – Chad 2011-04-15 17:41:56