在本文中,我们将详细介绍如何使用Windows应用程序在第三方网站上填写和提交Web表单?的各个方面,并为您提供关于应用程序发布到web上的相关解答,同时,我们也将为您带来关于.net–如何获取和设置
在本文中,我们将详细介绍如何使用Windows应用程序在第三方网站上填写和提交Web表单?的各个方面,并为您提供关于应用程序发布到web上的相关解答,同时,我们也将为您带来关于.net – 如何获取和设置通用Windows应用程序的音量级别、asp.net – Windows应用程序与Web应用程序开发、c# – 从网页通用Windows应用程序下载并保存图片、c# – 如何以编程方式配置代理服务器,以便使用Windows应用程序在本地网络上连接到Internet的有用知识。
本文目录一览:- 如何使用Windows应用程序在第三方网站上填写和提交Web表单?(应用程序发布到web上)
- .net – 如何获取和设置通用Windows应用程序的音量级别
- asp.net – Windows应用程序与Web应用程序开发
- c# – 从网页通用Windows应用程序下载并保存图片
- c# – 如何以编程方式配置代理服务器,以便使用Windows应用程序在本地网络上连接到Internet
如何使用Windows应用程序在第三方网站上填写和提交Web表单?(应用程序发布到web上)
我正在做一个项目,我必须做一个Windows应用程序,可以从用户的文本框中的URL。 现在,当用户按下“继续”button时,应用程序应该在网页浏览器控件中打开该URl,并在包含用户ID和密码文本框的该页面上填写表单,并通过该网页上的loginbutton进行提交。 现在我的应用程序应该向用户显示该webbrowser控件的下一页。
我可以通过我的C#代码在应用程序的web浏览器控件中打开url,但我无法弄清楚如何在当前在我的应用程序的webbrowser控件中打开的web页面上finduserID和pasword文本框,填充他们,如何findloginbutton,以及如何通过我的C#代码点击它。
确保生成的进程的窗口在主应用程序的前面?
我在哪里得到Microsoft.GroupPolicy.Management.dll?
长时间运行的进程暂停
C# – 如何使用TaskSchedular类列出特定用户的计划任务
使用安装程序更新Windows .net程序
为此,您必须查看第三方网站的页面源,并找到用户名,密码文本框和提交按钮的ID。 (如果你提供一个链接,我会为你检查)。 然后使用这个代码:
//add a reference to Microsoft.mshtml in solution explorer using mshtml; private SHDocVw.Webbrowser_V1 Web_V1; Form1_Load() { Web_V1 = (SHDocVw.Webbrowser_V1)webbrowser1.ActiveXInstance; } webbrowser1_Document_Complete() { if (webbrowser1.ReadyState == WebbrowserReadyState.Complete) { if (webbrowser1.Url.ToString() == "YourLoginSite.Com") { try { HTMLDocument pass = new HTMLDocument(); pass = (HTMLDocument)Web_V1.Document; HTMLInputElement passBox = (HTMLInputElement)pass.all.item("PassIDThatyoufoundinsource",0); passBox.value = "YourPassword"; HTMLDocument log = new HTMLDocument(); log = (HTMLDocument)Web_V1.Document; HTMLInputElement logBox = (HTMLInputElement)log.all.item("loginidfrompagesource",0); logBox.value = "yourlogin"; HTMLInputElement submit = (HTMLInputElement)pass.all.item("SubmitButtonIDFromPageSource",0); submit.click(); } catch { } } } }
我会使用seleniumium而不是Webbrowser控件。
它有一个很好的C#库,这种事情是它开发的主要原因。
您不必模拟填写用户名/密码字段,也不需要单击登录按钮。 您需要模拟浏览器而不是用户。
阅读登录页面html并解析它,找到用户名和密码字段的id。 通过查找名称设置为“用户名”,“用户”,“登录”等的标签,可以获得用户名。密码通常是类型为“密码”的标签。 用于登录的基于Javascript的弹出窗口将涉及解析js。
然后按照这里显示的示例代码, 如何以编程方式填写表单并“POST”一个网页?
这里最重要的是你模拟浏览器POST事件。 不要担心文本框和其他可视化表单元素,您的目标是使用适当的键值对来生成HTTP POST请求。
您的第一步是查看您假装为的页面的HTML,并找出用户标识和密码表单元素的名称。 所以,举个例子,他们分别被称为“txtUsername”和“txtPassword”,那么浏览器(或用户代理)将在其POST请求中发送的post参数将如下所示:
txtUsername=fflintstone&txtPassword=ilikerocks
作为背景,您可能希望对HTTP的工作方式做一点研究。 但是我会把这个留给你的。
另一个重要的事情是找出它发布这个登录请求的URL。 通常情况下,无论登录时浏览器的地址栏中显示的是什么内容,都可能是其他内容。 你需要检查表单元素的action属性,看看它的去向。
下载fiddler2的副本可能很有用。 是的,怪异的名字,但它是一个伟大的网络调试工具,基本上充当代理,并捕获浏览器和远程主机之间的一切。 一旦你找出如何使用它,你可以把每个请求 – 响应分开,看看发生了什么。 它会给你被调用的URL,请求的类型(通常是GET或POST),请求参数和响应的全文。
现在,你想建立你的应用程序。 您需要构建正确的HTTP请求的逻辑,传递形式参数,并返回结果。 幸运的是,System.Net.HttpWebRequest类将帮助你做到这一点。
假设登录页面在www.hello.org/login.aspx,它期望您发布登录参数。 所以你的代码可能看起来像这样(显然,这是非常简单的):
Imports System.IO Imports System.Net Imports System.Web Dim uri As String = "http://www.hello.org/login.aspx" Dim request As HttpWebRequest = DirectCast(WebRequest.Create(uri),HttpWebRequest) request.Timeout = 10000 ' 10 seconds request.UserAgent = "FlintstoneFetcher/1.0" ' or whatever request.Accept = "text/*" request.Headers.Add("Accept-Language","en") request.Method = "POST" Dim data As Byte() = New ASCIIEncoding().GetBytes("txtUsername=fflintstone&txtPassword=ilikerocks") request.ContentType = "application/x-www-form-urlencoded" request.ContentLength = data.Length Dim postStream As Stream = request.GetRequestStream() postStream.Write(data,data.Length) postStream.Close() Dim webResponse As HttpWebResponse webResponse = DirectCast(request.GetResponse(),HttpWebResponse) Dim streamReader As StreamReader = New StreamReader(webResponse.GetResponseStream(),Encoding.GetEncoding(1252)) Dim response As String = streamReader.ReadToEnd() streamReader.Close() webResponse.Close()
响应字符串现在包含来自远程主机的完整响应文本,并且该主机应该考虑您已登录。如果远程主机尝试设置Cookie,则可能需要做一些额外的工作(您需要返回这些Cookie )。 或者,如果期望您在连续页面上传递集成身份验证,则需要为连续请求添加凭据,如下所示:
request.Credentials = New NetworkCredential(theUsername,thePassword)
这应该是足够的信息来破解。 我建议你将你的逻辑与HTTP一起工作模块化。 我已经实现了一个复杂的解决方案,登录到某个网站,浏览到一个预定义的页面,解析html,并在“invox”中查找要下载的日常文件,如果存在,则下载它。 我将其设置为每天早上运行的批处理过程,从而省去了需要手动执行此操作的人员。 希望我的经验能让你受益!
.net – 如何获取和设置通用Windows应用程序的音量级别
它可以是与我的特定应用相关的声级 – 这是理想的;或者它可以是系统声级 – 如果必要/可能.
我正在使用visual studio 2015
我一直在寻找示例/样品,但已经干了.
任何帮助,将不胜感激.
(注意这不是一个重复的问题 – 我想获取和设置通用Windows应用程序的音量级别 – 这不能通过uwp中的COM对象完成 – uwp应用程序也不使用VBScript或JScript)
解决方法
它将包含您正在寻找的内容.
asp.net – Windows应用程序与Web应用程序开发
Windows应用程序开发遵循不同的方法,测试方法等?当我想到安装Windows应用程序以及安装应用程序的用户,还要考虑软件如何更新时,似乎这种类型的开发涉及的过程更加结构化,并且具有更少的错误空间”.
你认为没有WPF经验的人或Windows应用程序体验,但具有.net背景,有足够的知识来自信地设计和开发一个WPF应用程序(作为一个团队领导),或者如果一个这样的项目随之而来的是那些有经验的WPF应用程序盗版者呢?
解决方法
整个请求/响应通常是IMO,而且有时是不可靠的,更不用说越来越多的浏览器支持,不同的开发标准和页面生命周期的学习曲线哦,当然,广告的趋势越来越大,的地方
然而,哪些网络应用程序带给我们的是WinForms希望达到的目标,所以虽然有一个学习曲线,而且开发时间的增加有明显的收获.
我们(和我想象的大部分机构)倾向于使用Windows应用程序进行管理,其中丰富的用户界面在最短的时间内是可取的,毕竟,为什么要浪费Web服务器资源,当可能有99%的可用cpu在每个用户PC上?
c# – 从网页通用Windows应用程序下载并保存图片
try { var rootFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync( "MyAppName\\CoverPics",CreationCollisionoption.OpenIfExists); var coverpic_file = await rootFolder.CreateFileAsync(filename,CreationCollisionoption.FailIfExists); try { var httpWebRequest = HttpWebRequest.CreateHttp(coverUrl); HttpWebResponse response = (HttpWebResponse)await httpWebRequest.GetResponseAsync(); Stream resstream = response.GetResponseStream(); using (var stream = await coverpic_file.OpenAsync(FileAccessMode.ReadWrite)) { await resstream.copyToAsync(stream.AsstreamForWrite()); } response.dispose(); } catch //any exceptions happend while saving the picture { saved = false; } } catch { //https://msdn.microsoft.com/en-us/library/windows/apps/br227250.aspx //Raise an exception if file already present saved = true; }
在大多数情况下,此代码对我有用,但我注意到,对于少数图片,图像不能完全下载.
我在异步块中调用此函数,在foreach循环中单个go中有更多tahn 100个图像,最后几个是失败的下载
[我可以看到一些无效文件正在创建
或仅在下载和其他区域的图像的一部分,我可以看到黑色块[看起来像图像已损坏].
所有图像的大小仅小于1 MB
有人可以帮助我优化这段代码或指出代码中的错误,这样我就可以完全下载所有图像
解决方法
try { HttpClient client = new HttpClient(); // Create HttpClient byte[] buffer = await client.GetByteArrayAsync(coverUrl); // Download file using (Stream stream = await coverpic_file.OpenStreamForWriteAsync()) stream.Write(buffer,buffer.Length); // Save } catch { saved = false; }
并且此代码工作正常而不会导致任何问题所有图像都完全下载,并且没有更多的图像黑块问题.
如果任何人可以指出我的第一个代码的差异将真正有助于理解错误的原因
c# – 如何以编程方式配置代理服务器,以便使用Windows应用程序在本地网络上连接到Internet
请提出一个很好的例子/参考.
屏幕截图显示了用于设置代理服务器的Windows应用程
解决方法
今天关于如何使用Windows应用程序在第三方网站上填写和提交Web表单?和应用程序发布到web上的讲解已经结束,谢谢您的阅读,如果想了解更多关于.net – 如何获取和设置通用Windows应用程序的音量级别、asp.net – Windows应用程序与Web应用程序开发、c# – 从网页通用Windows应用程序下载并保存图片、c# – 如何以编程方式配置代理服务器,以便使用Windows应用程序在本地网络上连接到Internet的相关知识,请在本站搜索。
本文标签: