2011-10-31 57 views
0

我在當前項目(Windows窗體)上遇到問題,它需要將xml數據傳遞到由新的Web瀏覽器打開的URL。任何人都可以給我一些線索嗎?我在網上搜索了2種可能的方式。將xml數據傳遞到由新瀏覽器打開的Windows窗體的URL

  1. 使用HttpWebRequest在流中發送xml數據並創建URL。但你怎麼能這樣「打開新的瀏覽器」?
  2. 使用Process.Start或ProcessInfo.Start。您可以在URL參數中指定數據。但你如何傳遞XML數據?

感謝

+1

爲什麼要打開新的瀏覽器?發送xml後你需要響應嗎? – Damith

+0

感謝您的回覆。 xml數據將在URL上進行處理,並在發送後添加附加數據,發送後也會使用Page.Request和Page.Response。 – user198061

+0

請注意,通過QueryString傳遞的數據的大小限制。看看使用WebClient類和發佈XML(儘管在這種情況下,XML可能是矯枉過正的,你應該只是將所有內容都作爲表單值傳遞)。 –

回答

0

你是想用新的瀏覽器窗口是在自己的網站或外部網站的連結網址,這樣做呢?您是否需要適用於所有瀏覽器的內容,而不僅僅是Internet Explorer?從你的問題的性質來看,我將從假定你可能試圖將值傳遞給外部站點(在新窗口中打開)開始,並且希望支持儘可能多的瀏覽器,而不依賴於IE (只是良好的習慣)。然後,將它作爲URL的QueryString部分的一部分傳遞給XML的唯一選項 - 即在URL中的問號之後存在的name = value對。在執行此操作時,您需要確保您正在構建的URL中名稱=值對的VALUE部分對URL編碼正確。否則,如果您未在值部分使用URL編碼,則接收站點將無法正確解析數據。查看URL編碼信息下面的文章:

URL Encode in dot NET

這樣一件事,你如果通過URL傳遞XML格式的數據(或數據的任何大串)的名稱=值參數需要小心的是,根據使用的瀏覽器和版本,URL的大小可能會受到限制。因此,如果您將此傳遞給另一個已使用此技術的網站,那麼我認爲它已經是一個功能性網站,並且您不會在每個請求的URL中傳遞大量數據。

如果您的需求與這些假設不同,請詳細說明並可能爲您提供更多/更好的選擇。

+0

感謝您的回覆。數據將傳遞到外部網站,並可以使用IE來減少所有瀏覽器的工作。 xml數據有幾乎100個通過https傳遞的密鑰。請問URL的查詢字符串是有效的解決方案還是導致涉及大量的xml操作?發送完之後,更多的數據將被添加到xml中並等待外部站點的進一步處理。對我來說,理想的方式是在同一時間傳遞數據並打開IE。 – user198061

0

無需打開新的瀏覽器來發送和接收數據。您可以使用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; 
} 
+0

發送到外部網站的xml數據將等待更多由在線用戶填充的字段。這就是爲什麼我需要爲進一步在線流程打開一個新窗口。無論如何發送數據並將其預先填充到新瀏覽器中打開的頁面上? – user198061

+0

你的服務器是什麼? Web服務或asp.net網站? – Damith

+0

抱歉沒提到服務器是asp.net網站。 – user198061

相關問題