2012-04-25 88 views
0

我想在C#中使用HttpWebRequest或WebRequest调用JavaScript函数。我不想使用可以调用invokemember的webbrowser。如何使用C#上的参数调用JavaScript函数

这里是我的代码:

public void MyWebRequest(string url, string method, string data) 
{ 

     request = WebRequest.Create(url); 

     if (method.Equals("GET") || method.Equals("POST")) 
     { 
      // Set the Method property of the request to POST. 
      request.Method = method; 
     } 
     else 
     { 
      throw new Exception("Invalid Method Type"); 
     } 
     string postData = data; 

     byte[] byteArray = Encoding.UTF8.GetBytes(postData); 

     request.ContentType = "application/x-www-form-urlencoded"; 

     request.ContentLength = byteArray.Length; 

     dataStream = request.GetRequestStream(); 

     dataStream.Write(byteArray, 0, byteArray.Length); 

     dataStream.Close(); 
} 
MyWebRequest("http://example.com", "POST", "javascript:onclick=\"try(1,3)\""); 

try是一个JS函数有两个int参数。我想调用onclick方法,但是如何将参数传递给函数。

onclick="try(1,3);" 
+0

对不起,我编辑了我的代码!我忘了添加一些代码..现在它确定 – unbalanced 2012-04-25 13:36:36

+0

JavaScript函数驻留在您使用'WebRequest'获取的页面上? – 2012-04-25 13:37:01

+0

是它的.... :) – unbalanced 2012-04-25 13:39:32

回答

3

正是这样,这不是一个开放式的问题...

WebRequest本质上是一种“荣耀”套接字库,建立并从Web服务器的连接。它不过是在客户端(使用WebRequest的应用程序)和托管该站点的服务器之间传输数据的手段。

由于同样的原因,如果您查看dataStream(引用您的代码),您只会看到HTML标记,而不是实际的布局元素和颜色,样式等,javasript也不起作用。 HTML需要一个渲染代理,JavaScript需要一个引擎。

因此,如果您需要使用页面上包含的JavaScript的功能,WebBrowser是您最好的选择。它会加载运行页面上任何JavaScript所需的任何库/插件。它可能会比较慢,但是那是因为它给你的不仅仅是传输数据(它还呈现HTML,执行任何初始化脚本,并且绑定到页面定义为美学所必需的任何元素。)

+0

谢谢你的回答..我完全理解它.. – unbalanced 2012-04-25 14:02:09

+0

@HarunAbi:很高兴能帮到你。 ;-) – 2012-04-25 14:04:57