❶ 在winform里怎么调用WebBrowser控件里的脚本
在winform里怎么调用WebBrowser控件里的脚本
这是在CSDN论坛上的一个问题,感觉也许对其他人也会有点用处,所以贴出来
JScript是建立在COM之上的,设置变量/调用函数是通过IDispatch来实现的。在.NET里,调用IDispatch里的方法是通过反射来实现的,即,通过System.Type.InvokeMember 。该方法调用 IDispatch::GetIDsOfNames 以及IDispatch::Invoke来调用COM Automation 对象里的方法和属性。参考Binding for Office automation servers with Visual C# .NET
假如有下列HTML:
<mce:script language="JavaScript"><!--
var var1 = 'yes';
function testx(obj)
{
alert(obj);
alert(var1);
}
// --></mce:script>
<input type=button value="click me" onclick="testx('hello');">
在C#里,假设axWebBrowser1是你的WebBrowser控件对象,你已经装载了上述HTML,你可以这么做:
mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)axWebBrowser1.Document;
mshtml.IHTMLWindow2 win = (mshtml.IHTMLWindow2)doc.parentWindow;
//读变量值
object o = win.GetType().InvokeMember ("var1", BindingFlags.GetProperty, null, win, new Object [] {});
//写变量值
win.GetType().InvokeMember ("var1", BindingFlags.SetProperty, null, win, new Object [] {"新的值"});
//调用方法
win.GetType().InvokeMember("testx",BindingFlags.InvokeMethod,null,win,new object[]{1});
比较麻烦,对么?幸运的是,我们不用这么麻烦,因为IHTMLWindow2里有个现成方法,execScript,我们可以这么做:
win.execScript("var1 = 'abc';","javascript");
win.execScript("testx(12)","javascript");
❷ winform 怎么新建webapi
个人建议WCF和WebAPI都要学,WebAPI仅限http协议,如果要追求高性能而使用tcp协议那就得上WCF,一个功能全面、API多样,一个轻巧,如果只是用于ajax后端那肯定是WebAPI了,如果是用于更复杂多变的环境还是WCF强。
❸ 想问一下Winform和WebApi搭配着好用么
个人建议WCF和WebAPI都要学,WebAPI仅限http协议,如果要追求高性能而使用tcp协议那就得上WCF,一个功能全面、API多样,一个轻巧,如果只是用于ajax后端那肯定是WebAPI了,如果是用于更复杂多变的环境还是WCF强。
❹ 想问一下Winform和WebApi搭配着好用么
winform主要用于cs环境下,主要是在UI上。 后台数据交互功能可以使用restful api来实现。你说的web api其实就是基于restful的。
❺ 想问一下Winform和WebApi搭配着好用么
在新出的MVC中,增加了WebAPI,用于提供REST风格的WebService,新生成的WebAPI项目和典型的MVC项目一样,包含主要的Models、Views、Controllers等文件夹和Global.asax文件。Views对于WebAPI来说没有太大的用途
❻ webapi怎么调用winform(CS)中的方法(cs是服务端必须先独立启动)
有解决方案:建立CS程序与WebApi服务器的点对点连接(通过Tcp/ip),然后WebApi发起请求,CS程序返回请求结果。
详细一点:CS端开启tcp.ip的监听端口,webapi服务器连接这个端口,需要掌握网络编程技能。网络搜索C# 网络编程相关的源码。
若CS端没有开启外网IP,还需要穿透NAT(类似QQ聊天,网络编程高级篇),这里有文章参考一下: C#实现UDP穿透NAT(UDP打洞)完整版(原)
www.csframework.com/archive/2/arc-2-20110713-1693.htm
❼ c#winform怎么调用webservice
建议这样试试看:
亲测可用,主要还是Url的拼接,这个需要客户给出格式
/// <summary>
/// 与客户WMS系统通讯获取数据
/// </summary>
/// <param name="url">接口,需要拼接成客户规定的格式</param>
/// <param name="data">请求数据,需要拼接成客户规定的Json格式</param>
/// <returns>全部数据</returns>
public string Post(string url, string data)
{
try
{
//创建请求
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
//设置请求方法
request.Method = "Post";
request.Referer = "";
//将数据转换为UTF8字节流
byte[] bytes = Encoding.UTF8.GetBytes(data);
//设置发送的字节数
request.ContentLength = bytes.Length;
//设置发送内容格式
request.ContentType = "application/json; charset=UTF-8";
//获取用于写入请求数据的流对象
Stream stream = request.GetRequestStream();
//向当前流写入数据,发送请求
stream.Write(bytes, 0, bytes.Length);
//接收返回流,通过Web访问对象获取响应内容
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//通过响应内容流创建StreamReader对象
//StreamReader sr = new StreamReader(request.GetRequestStream(), Encoding.UTF8);//写错,导致一直读取不了数据
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
//读取所有内容
string retString = sr.ReadToEnd();
//关闭流
sr.Close();
stream.Close();
if (response != null)
{
//关闭响应流
response.Close();
}
if (request != null)
{
//取消请求
request.Abort();
}
return retString;
}
catch (Exception ex)
{
throw ex;
}
}
}
❽ 如何用winform调用webservice的数据并显示
添加web引用时,会要求给此引用取名,一般 这个会被我们忘记,不过他有默认的名字 是 WebReference
然后这样写 WebReference.你的webservice的名字 w=new WebReference.你的webservice名字();
要是不行的话,你就重新添加web引用,记住引用的名字(假设为a)
然后 a.你的webservice的名字 w=new a.你的webservice名字();
❾ 如何创建,发布Web Service和 C#WINFORM里如何调用WEB Service API
一、创建和发布Web
Service
Web服务方法中可以返回一个DataSet对象
WEB服务可以说是下一代WEB应用程序的基础,无论客户端是WINDOWS应用、ASP.NET Web
Form程序、甚至其他语言的客户端,都可以与同一个WEB服务通信,其平台和语言无关性使其有了广阔的发展空间。
利用VS2005和IIS我们可以很容易地发布一个WEB
SERVICE,因为其中有几个细节需要注意,所在初学者常常在这里出现问题,现通过一个简单的例子说明如何创建和发布一个WEB SERVICE。
环境:Windows Server 2003,.Net FrameWork 2.0,IIS6.0
工具:VS2005
1.首先VS2005中新建一个WEB服务项目。
打开“文件”-“新建”-“网站”,在对话框中选择“ASP.NET Web服务”,VS2005会自动生成一个Service.cs文件,包含如下代码:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service
:
System.Web.Services.WebService
{
public Service
()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld()
{
return "Hello
World";
}
}
你可以在这里修改自己的命名空间,加入自己的方法,但本文只是为了说明如何创建和发布,所以对Service.cs不做任何更改。
2.生成网站
很简单,“生成”-“生成网站”或直接Shift+F6
3.发布网站
也是简单,“生成”-“发布网站”,这里会弹出一个对话框,什么也不需要修改,记下发布的目录。比如:D:/我的文档/Visual Studio
2005/Projects/WebSite1/PrecompiledWeb/WebSite1,我们需要目录下的文件。
4.配置IIS
在你的WEB目录下一个文件夹,比如webservice,并将第3步发布目录中的所有文件和目录拷贝到这个目录中,打开IIS,找到你的站点,在这个webservice目录上点右键,选择属性,在弹出对话框的“目录”选择项卡中点击“创建”按钮,然后确定即可。
到这时,已经大功告成,你可以通过访问http://域名/webservice/Service.asmx来验证。页面会出现如下图所示内容:
注意:除了需要在IIS中对服务目录创建程序外,还要注意防火墙或杀毒软件的设置,我在首次访问service.asmx文件时,杀毒软件报告w3wp.exe在系统文件夹中生成asp_code.dll等,应该允许其他创建,否则会无法访问。
通过这样简单的方法,你可以轻松建立自己的WEB服务,在同一站点还可以有多个WEB服务。
二、c#的winform中调用Web Service
API(VB6.0也可以调用该web服务)
现在以C# WinForm为例谈谈如何使用它
,在服务中我们只有一个自动生成的方法:HelloWord(),其实现如下:
[WebMethod]
public string HelloWorld(){
return "Hello
World";
}
在WINFORM中我们将添加一个按钮,添加单击事件,在事件处理函数中弹出一个对话框显示HelloWord的结果。
1.添加WEB引用
在VS2005中新建一个Windows应用程序项目,取名testwebservice,在项目中添加一个WEB引用,可在“解决方案资源管理器”的项目名上点右键添加,在弹出对话框中的URL输入框中输入WEB服务器的路径:如http://你的域名/web服务务路径/service.asmx,点击“前行”按钮后会搜索这个服务,并在右边报告找到的服务,并在左边显示service.asmx页面,我们在WEB引用名输入框中输入一个名字,这个将做为程序中WEB服务的命名空间名,这里我们取名mywebservice。
2.添加按钮单击事件
在Form中拖出一个Button按钮,双击单击事件处理方法,代码如下:
private void button1_Click(object sender,
EventArgs e)
{
mywebservice.Service
ws = new testwebservice.mywebservice.Service();
MessageBox.Show (ws.HelloWorld());
}
其中mywebservice.Service ws = new
testwebservice.mywebservice.Service()是实例化一个WEB服务对象,ws.HelloWorld()是调用WEB服务中的这个HelloWorld方法,其返回字符串将用MessageBox.Show()函数显示出来。
好了,最简单的一个调用WEB服务API的WinForm例子已经完成了,编译运行,单击按钮,将会弹出对话框显示“Hello World”信息。
重要的一点,在.net的WEB服务API中,除了一般的数据类型外,还可以返回结构和DataSet对象,有了这一点,就可以构建我们大多数的数据库应用了。
好了,接下来的工作就是在WEB服务中添加你的API完成你的工作了。
转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦