我在當前項目(Windows窗體)上遇到問題,它需要將xml數據傳遞到由新的Web瀏覽器打開的URL。任何人都可以給我一些線索嗎?我在網上搜索了2種可能的方式。將xml數據傳遞到由新瀏覽器打開的Windows窗體的URL
- 使用HttpWebRequest在流中發送xml數據並創建URL。但你怎麼能這樣「打開新的瀏覽器」?
- 使用Process.Start或ProcessInfo.Start。您可以在URL參數中指定數據。但你如何傳遞XML數據?
感謝
我在當前項目(Windows窗體)上遇到問題,它需要將xml數據傳遞到由新的Web瀏覽器打開的URL。任何人都可以給我一些線索嗎?我在網上搜索了2種可能的方式。將xml數據傳遞到由新瀏覽器打開的Windows窗體的URL
感謝
你是想用新的瀏覽器窗口是在自己的網站或外部網站的連結網址,這樣做呢?您是否需要適用於所有瀏覽器的內容,而不僅僅是Internet Explorer?從你的問題的性質來看,我將從假定你可能試圖將值傳遞給外部站點(在新窗口中打開)開始,並且希望支持儘可能多的瀏覽器,而不依賴於IE (只是良好的習慣)。然後,將它作爲URL的QueryString部分的一部分傳遞給XML的唯一選項 - 即在URL中的問號之後存在的name = value對。在執行此操作時,您需要確保您正在構建的URL中名稱=值對的VALUE部分對URL編碼正確。否則,如果您未在值部分使用URL編碼,則接收站點將無法正確解析數據。查看URL編碼信息下面的文章:
這樣一件事,你如果通過URL傳遞XML格式的數據(或數據的任何大串)的名稱=值參數需要小心的是,根據使用的瀏覽器和版本,URL的大小可能會受到限制。因此,如果您將此傳遞給另一個已使用此技術的網站,那麼我認爲它已經是一個功能性網站,並且您不會在每個請求的URL中傳遞大量數據。
如果您的需求與這些假設不同,請詳細說明並可能爲您提供更多/更好的選擇。
感謝您的回覆。數據將傳遞到外部網站,並可以使用IE來減少所有瀏覽器的工作。 xml數據有幾乎100個通過https傳遞的密鑰。請問URL的查詢字符串是有效的解決方案還是導致涉及大量的xml操作?發送完之後,更多的數據將被添加到xml中並等待外部站點的進一步處理。對我來說,理想的方式是在同一時間傳遞數據並打開IE。 – user198061
無需打開新的瀏覽器來發送和接收數據。您可以使用HttpWebRequest POST
方法發送XML,並使用HttpWebResponse
讀取響應。
using System.Net;
using System.IO;
using System.Text;
private string SendRequest(string xml, string url)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
byte[] requestBytes = Encoding.ASCII.GetBytes(xml);
req.Method = "POST";
req.ContentType = "text/xml;charset=utf-8";
req.ContentLength = requestBytes.Length;
Stream requestStream = req.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.Default);
string response = sr.ReadToEnd();
sr.Close();
res.Close();
return response;
}
發送到外部網站的xml數據將等待更多由在線用戶填充的字段。這就是爲什麼我需要爲進一步在線流程打開一個新窗口。無論如何發送數據並將其預先填充到新瀏覽器中打開的頁面上? – user198061
你的服務器是什麼? Web服務或asp.net網站? – Damith
抱歉沒提到服務器是asp.net網站。 – user198061
爲什麼要打開新的瀏覽器?發送xml後你需要響應嗎? – Damith
感謝您的回覆。 xml數據將在URL上進行處理,並在發送後添加附加數據,發送後也會使用Page.Request和Page.Response。 – user198061
請注意,通過QueryString傳遞的數據的大小限制。看看使用WebClient類和發佈XML(儘管在這種情況下,XML可能是矯枉過正的,你應該只是將所有內容都作爲表單值傳遞)。 –