2011-10-31 51 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

相关问题